- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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[%
您可能关注的文档
最近下载
- io模块使用手册do716-s11使用手册.pdf VIP
- 2025年晋中职业技术学院单招职业倾向性考试题库含答案.docx VIP
- 《服装色彩与图案》课件.pptx VIP
- 一种用于扁管式固体氧化物燃料电池的电极接触层及其制备方法.pdf VIP
- 2025年陕西航空职业技术学院单招职业倾向性测试必刷测试卷最新.docx VIP
- 人教(部编版)一年级上册语文第六单元测试题(含答案).doc VIP
- 标准图集-12D101-5-110KV 及以下电缆敷设.pdf VIP
- 关于围绕三个聚焦对某单位巡察情况报告3篇.pdf VIP
- 基于KLM理论的换能器性能优化设计研究.docx
- 屋面及防水工程—屋面防水工程(建筑施工课件).pptx
原创力文档


文档评论(0)