OpenCV结构分析与形状描述符(22)计算图像中某个轮廓或区域的矩函数moments()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算一个多边形或光栅化形状直到三阶的所有矩。

该函数计算一个向量形状或光栅化形状直到三阶的矩。结果返回在 cv::Moments 结构中。

函数原型

cpp 复制代码
Moments cv::moments
(
	InputArray 	array,
	bool 	binaryImage = false 
)		

参数

  • 参数array 一个单通道的 8 位或浮点 2D 数组的光栅图像,或一个 1×N 或 N×1 的 2D 点(Point 或 Point2f)数组。
  • 参数binaryImage 如果为真,则所有非零图像像素被视为 1。该参数仅用于图像。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 创建一个空白的图像
    cv::Mat image = cv::Mat::zeros( 300, 300, CV_8UC1 );  // 单通道8位图像

    // 在图像中间画一个白色的圆形作为轮廓
    cv::circle( image, cv::Point( 150, 150 ), 50, cv::Scalar( 255 ), -1 );

    // 查找图像中的轮廓
    std::vector< std::vector< cv::Point > > contours;
    cv::findContours( image, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE );

    // 计算轮廓的矩
    cv::Moments moments = cv::moments( contours[ 0 ] );

    // 从矩中计算质心
    double cx = moments.m10 / moments.m00;
    double cy = moments.m01 / moments.m00;

    // 计算面积
    double area = moments.m00;

    // 在图像上标记质心
    cv::circle( image, cv::Point( static_cast< int >( cx ), static_cast< int >( cy ) ), 5, cv::Scalar( 128 ), -1 );

   

    // 输出质心坐标和面积
    std::cout << "Centroid at (" << cx << ", " << cy << ")" << std::endl;
    std::cout << "Area: " << area << std::endl;
     // 显示图像
    cv::imshow( "Contour with Centroid", image );
    cv::waitKey( 0 );
    
    return 0;
}

运行结果

终端:

bash 复制代码
Centroid at (150, 150)
Area: 7704

图像:

相关推荐
清华kenny12 小时前
中医生活化智能终端对比:晓得养在合肥周边的服务优势
大数据·人工智能·安徽晓得养
ZKNOW甄知科技12 小时前
燕千云迭代版本发布:智能Agent深入业务现场
运维·人工智能·低代码·机器学习·自然语言处理·自动化·aigc
蒲公英内测分发12 小时前
智能手环出海测试,海外合作方分散在不同国家,Android 测试包怎么持续分发和更新?
android·前端·人工智能·测试工具·智能手表
危险、12 小时前
AI写的计划方案领导不满意?试下我这个反复打磨的计划方案提示词?
人工智能
镜象科技12 小时前
ACT自助干预适用人群:谁适合、谁不适合、边界在哪
人工智能
集芯微电科技有限公司12 小时前
集芯微电科技推出5.5V/10A集成功率MOSFET降压DC/DC转换器
人工智能·科技·单片机·嵌入式硬件·神经网络·生成对抗网络
打工仔折腾 AI13 小时前
Linux 网络编程:从零掌握 TCP Socket 编程与 C++ 实战落地
linux·网络·人工智能·后端·python·tcp/ip·性能优化
科威网络13 小时前
RAG 系统落地:向量库、文档切片与检索效果优化实践
人工智能·软件需求
QuZhengRong13 小时前
【News】2026.10.16 – 10.21 AI 科技周报
人工智能·科技·openai·谷歌·新闻
IT枫斗者枫哥13 小时前
Spring AI文档更新后仍命中旧内容:核对分片ID、来源和版本
java·人工智能