C++如何实现OpenCV图像的矩

发布时间:2021-11-26 10:01:28 作者:小新
来源:亿速云 阅读:264

这篇文章主要介绍了C++如何实现OpenCV图像的矩,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

概述

图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。

从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、方向、形状等,图像矩广泛应用于模式识别、目标分类、目标识别与防伪估计、图像编码与重构等领域。

OpenCV中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。

相关API

cv::moments (   InputArray  array,
                bool    binaryImage = false 
            )


contourArea()

该函数使用Green formula计算轮廓面积,返回面积和非零像素数量如果使用drawContours或fillPoly绘制轮廓,可能导致不同。

double cv::contourArea  (   InputArray  contour,
                            bool    oriented = false 
                        )


arcLength()

用于计算封闭轮廓的周长或曲线的长度

double cv::arcLength    (   InputArray  curve,
                            bool    closed 
                            )

代码演示

新建一个项目opencv-0026,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

C++如何实现OpenCV图像的矩

C++如何实现OpenCV图像的矩

核心代码

实现步骤:

  1. 变为灰度图

  2. 高斯模糊

  3. 边缘检测

  4. 轮廓提取

  5. 计算图像矩

  6. 计算图像的质心

  7. 绘制轮廓和质心

  8. 显示图像

C++如何实现OpenCV图像的矩

C++如何实现OpenCV图像的矩

C++如何实现OpenCV图像的矩

运行效果

C++如何实现OpenCV图像的矩

其中命令行里面显示每个轮廓的面积和周长,右边的画的轮廓里面还有每个轮廓的质心

感谢你能够认真阅读完这篇文章,希望小编分享的“C++如何实现OpenCV图像的矩”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

推荐阅读:
  1. matlab怎么计算灰度图像的一阶矩,二阶矩,三阶矩
  2. opencv3/C++图像滤波实现方式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ opencv

上一篇:matlab python画二项分布的动态图方法是什么

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》