利用OpenCV求取图像多轮廓质心,并在输出图像上显示质心坐标
来源:互联网 发布:淘宝店铺规划方案 编辑:程序博客网 时间:2024/05/22 06:11
1、源代码
#include "stdafx.h"#include <iostream>#include <opencv2/core/core.hpp>#include <opencv/cv.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv; using namespace std; Mat src; Mat src_gray; int thresh = 30; int max_thresh = 255; int main(){ src = imread( "C:\\Users\\Lijunliang\\Desktop\\opencvpic\\2\\22.png" ,CV_LOAD_IMAGE_COLOR ); //注意路径得换成自己的cvtColor( src, src_gray, CV_BGR2GRAY );//灰度化 GaussianBlur( src, src, Size(3,3), 0.1, 0, BORDER_DEFAULT ); blur( src_gray, src_gray, Size(3,3) ); //滤波 namedWindow( "image", CV_WINDOW_AUTOSIZE ); imshow( "image", src ); moveWindow("image",20,20); //定义Canny边缘检测图像 Mat canny_output; vector<vector<Point> > contours; vector<Vec4i> hierarchy; //利用canny算法检测边缘 Canny( src_gray, canny_output, thresh, thresh*3, 3 ); namedWindow( "canny", CV_WINDOW_AUTOSIZE ); imshow( "canny", canny_output ); moveWindow("canny",550,20); //查找轮廓 findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); //计算轮廓矩 vector<Moments> mu(contours.size() ); for( int i = 0; i < contours.size(); i++ ) { mu[i] = moments( contours[i], false ); } //计算轮廓的质心 vector<Point2f> mc( contours.size() ); for( int i = 0; i < contours.size(); i++ ) { mc[i] = Point2d( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); } //画轮廓及其质心并显示 Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 ); for( int i = 0; i< contours.size(); i++ ) { Scalar color = Scalar( 255, 0, 0); drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() ); circle( drawing, mc[i], 5, Scalar( 0, 0, 255), -1, 8, 0 ); rectangle(drawing, boundingRect(contours.at(i)), cvScalar(0,255,0)); char tam[100]; sprintf(tam, "(%0.0f,%0.0f)",mc[i].x,mc[i].y); putText(drawing, tam, Point(mc[i].x, mc[i].y), FONT_HERSHEY_SIMPLEX, 0.4, cvScalar(255,0,255),1); }namedWindow( "Contours", CV_WINDOW_AUTOSIZE ); imshow( "Contours", drawing ); moveWindow("Contours",1100,20); waitKey(0); src.release(); src_gray.release(); return 0; }
0 0
- 利用OpenCV求取图像多轮廓质心,并在输出图像上显示质心坐标
- OpenCV 轮廓质心
- 初学 OpenCV 图像加载、输出+图像轮廓提取绘制并取出每个轮廓的坐标集合
- 图像目标区域质心计算
- 图像质心分析:Matlab、质心法,高斯拟合法
- 利用opencv将两张图像在同一窗口上显示,并在图片上显示文字
- 质心
- 【matlab】:matlab实现求图像中的多个质心
- 求图像质心的C语言实现
- 【matlab】:matlab求图像质心算法
- opencv11-计算不规则图像的质心
- barycentric coordinates(质心坐标)
- 利用OpenCV求取图像的重心
- 利用OpenCV求取图像的重心
- OpenCV笔记10:用cvFindContours查找图像轮廓并显示
- 《cv中文参考手册-图像轮廓处理-结构分析与形状识别-获取各个对象的质心》HuMoments
- opencv提取目标质心
- opencv学习笔记 在输入图像上寻找并绘制轮廓
- Linux调用opencv编程(一)
- 深入剖析神经网络的运行机理及实现
- myeclipse乱码问题
- POJ 1019Number Sequence(组合数学)
- Hibernate基础:快速入门(3):SessionFactory和Session
- 利用OpenCV求取图像多轮廓质心,并在输出图像上显示质心坐标
- Long Long 的使用
- MaterialDesign的学习
- MAC查看端口占用情况
- Netty简单应用
- 域名、主机和网站之间的区别
- JVM类加载机制详解(二)类加载器与双亲委派模型
- Ubuntu 安装 JDK 7 / JDK8 的两种方式
- 第十六周--项目2-大数据集上排序算法性能的体验