计算轮廓矩.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算轮廓矩

#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); /// 函数声明 void thresh_callback(int, void* ); /** @主函数 */ int main( int argc, char** argv ) { /// 读入原图像, 返回3通道图像数据 src = imread( argv[1], 1 ); /// 把原图像转化成灰度图像并进行平滑 cvtColor( src, src_gray, CV_BGR2GRAY ); blur( src_gray, src_gray, Size(3,3) ); /// 创建新窗口 char* 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); } /** @thresh_callback 函数 */ void thresh_callback(int, void* ) { Mat canny_output; vectorvectorPoint contours; vectorVec4i hierarchy; /// 使用Canndy检测边缘 Canny( src_gray, canny_output, thresh, thresh*2, 3 ); /// 找到轮廓 findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) ); /// 计算矩 vectorMoments mu(contours.size() ); for( int i = 0; i contours.size(); i++ ) { mu[i] = moments( contours[i], false ); } /// 计算中心矩: vectorPoint2f 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 ); } /// 绘制轮廓 Mat 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 ); } /// 显示到窗口中 namedWindow( Contours, CV_WINDOW_AUTOSIZE ); imshow( Contours, drawing ); /// 通过m00计算轮廓面积并且和OpenCV函数比较 printf(\t Info: Area and Contour Length \n); for( int i = 0; i contours.size(); i++ ) { printf( * Contour[%

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档