opencv学习-imgprocess-计算图像矩moments
来源:互联网 发布:天宝广电网络的宽带 编辑:程序博客网 时间:2024/05/19 22:00
moments轮廓矩
contourArea轮廓面积
arcLength轮廓长度
vector<Moments> mu(contours.size() );存储轮廓矩
vector<Point2f> mc( contours.size() );存储轮廓中心
mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 );
代码如下:
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace cv;using namespace std;Mat src; Mat src_gray;int thresh = 100;int max_thresh = 255;RNG rng(12345);/// Function headervoid thresh_callback(int, void* );/** @function main */int main( int argc, char** argv ){/// Load source image and convert it to graysrc = imread( "1.jpg", 1 );/// Convert image to gray and blur itcvtColor( src, src_gray, CV_BGR2GRAY );blur( src_gray, src_gray, Size(3,3) );/// Create Windowchar* source_window = "Source";namedWindow( source_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src );createTrackbar( " Canny thresh:", "Source", &thresh, max_thresh, thresh_callback );thresh_callback( 0, 0 );waitKey(0);return(0);}/** @function thresh_callback */void thresh_callback(int, void* ){Mat canny_output;vector<vector<Point> > contours;vector<Vec4i> hierarchy;/// Detect edges using cannyCanny( src_gray, canny_output, thresh, thresh*2, 3 );/// Find contoursfindContours( canny_output, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );/// Get the momentsvector<Moments> mu(contours.size() );for( int i = 0; i < contours.size(); i++ ){ mu[i] = moments( contours[i], false ); }/// Get the mass centers:vector<Point2f> mc( contours.size() );for( int i = 0; i < contours.size(); i++ ){ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); }/// Draw contoursMat drawing = Mat::zeros( canny_output.size(), CV_8UC3 );for( int i = 0; i< contours.size(); i++ ){Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );circle( drawing, mc[i], 4, color, -1, 8, 0 );}/// Show in a windownamedWindow( "Contours", CV_WINDOW_AUTOSIZE );imshow( "Contours", drawing );/// Calculate the area with the moments 00 and compare with the result of the OpenCV functionprintf("\t Info: Area and Contour Length \n");for( int i = 0; i< contours.size(); i++ ){printf(" * Contour[%d] - Area (M_00) = %.2f - Area OpenCV: %.2f - Length: %.2f \n", i, mu[i].m00, contourArea(contours[i]),arcLength(contours[i],true));Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );circle( drawing, mc[i], 4, color, -1, 8, 0 );}}
- opencv学习-imgprocess-计算图像矩moments
- opencv学习-imgprocess-图像金字塔
- opencv学习(四十三)之图像的矩moments()
- opencv学习-imgprocess-滤波
- opencv学习-imgprocess-Remapping
- opencv学习-imgprocess-直方图
- opencv学习-imgprocess-形态学处理
- opencv学习-imgprocess- sobel算子
- opencv学习-imgprocess-计算轮廓的边界旋转box和椭圆
- opencv学习-imgprocess-创建自己的滤波器
- opencv学习-imgprocess-为图片增加边界
- opencv学习-imgprocess-canny边缘提取
- opencv学习-imgprocess-霍夫变换
- opencv学习-imgprocess-仿射变换warpAffine
- opencv学习-imgprocess-直方图比较compareHist
- opencv学习-imgprocess-反向投影Back Projection
- opencv学习-imgprocess-模板匹配matchTemplate
- opencv3矩的计算-moments函数
- sed
- OCP-1Z0-053-V13.02-131题
- 网站优化中404页面所带来的影响
- 未能进入中断模式,原因如下:源文件“XXXXXX”不属于正在调试的项目。
- Fragment自定义动画、动画以及兼容性包应用
- opencv学习-imgprocess-计算图像矩moments
- 网页设计中将被淘汰的8个趋势
- VM redhat6.4 yum
- 存储系统文章汇总
- nutch使用攻略bate版
- FatJar插件介绍、安装步骤
- Oracle9iClient简化版的安装与tnsnames配置,sqlplus的连接
- 将多个 SWF 文件合并为一个 SWF 以进行 iOS 部署
- 【iOS多线程】Mac&iOS之多线程