arcLength函数[通俗易懂]

arcLength函数[通俗易懂]1、arcLength函数函数的作用主要是计算图像轮廓的周长、2、函数调用形式C++: double arcLength(InputArray curve,bool closed)参数详解:Input…

大家好,又见面了,我是你们的朋友全栈君。

1、arcLength函数

函数的作用

主要是计算图像轮廓的周长、

2、函数调用形式

C++: double arcLength(InputArray curve, bool closed)

参数详解:

InputArray curve:表示图像的轮廓

bool closed:表示轮廓是否封闭的

3、一般图像轮廓矩也可以算出图像的周长和面积

opencv代码:


   
   
   
  1. #include “opencv2/highgui/highgui.hpp”
  2. #include “opencv2/imgproc/imgproc.hpp”
  3. #include <iostream>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. using namespace cv;
  7. using namespace std;
  8. Mat src; Mat src_gray;
  9. int thresh = 100;
  10. int max_thresh = 255;
  11. RNG rng(12345);
  12. /// 函数声明
  13. void thresh_callback(int, void* );
  14. /** @主函数 */
  15. int main( int argc, char** argv )
  16. {
  17. /// 读入原图像, 返回3通道图像数据
  18. src = imread( argv[ 1], 1 );
  19. /// 把原图像转化成灰度图像并进行平滑
  20. cvtColor( src, src_gray, CV_BGR2GRAY );
  21. blur( src_gray, src_gray, Size( 3, 3) );
  22. /// 创建新窗口
  23. char* source_window = “Source”;
  24. namedWindow( source_window, CV_WINDOW_AUTOSIZE );
  25. imshow( source_window, src );
  26. createTrackbar( ” Canny thresh:”, “Source”, &thresh, max_thresh, thresh_callback );
  27. thresh_callback( 0, 0 );
  28. waitKey( 0);
  29. return( 0);
  30. }
  31. /** @thresh_callback 函数 */
  32. void thresh_callback(int, void* )
  33. {
  34. Mat canny_output;
  35. vector< vector<Point> > contours;
  36. vector<Vec4i> hierarchy;
  37. /// 使用Canndy检测边缘
  38. Canny( src_gray, canny_output, thresh, thresh* 2, 3 );
  39. /// 找到轮廓
  40. findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point( 0, 0) );
  41. /// 计算矩
  42. vector<Moments> mu(contours.size() );
  43. for( int i = 0; i < contours.size(); i++ )
  44. { mu[i] = moments( contours[i], false ); }
  45. /// 计算中心矩:
  46. vector<Point2f> mc( contours.size() );
  47. for( int i = 0; i < contours.size(); i++ )
  48. { mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); }
  49. /// 绘制轮廓
  50. Mat drawing = Mat::zeros( canny_output.size(), CV_8UC3 );
  51. for( int i = 0; i< contours.size(); i++ )
  52. {
  53. Scalar color = Scalar( rng.uniform( 0, 255), rng.uniform( 0, 255), rng.uniform( 0, 255) );
  54. drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );
  55. circle( drawing, mc[i], 4, color, -1, 8, 0 );
  56. }
  57. /// 显示到窗口中
  58. namedWindow( “Contours”, CV_WINDOW_AUTOSIZE );
  59. imshow( “Contours”, drawing );
  60. /// 通过m00计算轮廓面积并且和OpenCV函数比较
  61. printf( “\t Info: Area and Contour Length \n”);
  62. for( int i = 0; i< contours.size(); i++ )
  63. {
  64. printf( ” * Contour[%d] - Area (M_00) = %.2f - Area OpenCV: %.2f - Length: %.2f \n”, i, mu[i].m00, contourArea(contours[i]), arcLength( contours[i], true ) );
  65. Scalar color = Scalar( rng.uniform( 0, 255), rng.uniform( 0, 255), rng.uniform( 0, 255) );
  66. drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );
  67. circle( drawing, mc[i], 4, color, -1, 8, 0 );
  68. }
  69. }

            </div>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132125.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python激活码 2021【注册码】

    python激活码 2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    94
  • Android游戏引擎_2d游戏引擎

    Android游戏引擎_2d游戏引擎Android游戏引擎汇总1.AndEngine简介:AndEngine基于libGDX框架开发,使用OpenGLES进行图形绘制。同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理效果。在Rokon停止更新以后,AndEngine成为Android最为流行的2D游戏引擎优点:(1)高效:在大运算量好事情况下,使用C/C++本地代码进行开发。比如物理引擎或

    2026年1月24日
    3
  • jvm的垃圾回收机制_垃圾回收厂

    jvm的垃圾回收机制_垃圾回收厂一、概述我们知道自动的垃圾回收机制是Java语言一个特点,它让我们在写程序的时候不再需要考虑内存管理问题。内存管理实际上就是分配内存和回收内存这两个问题,在上一篇文章我大概介绍了jvm是如何划分内存

    2022年8月16日
    8
  • sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

    sql2008数据库置疑的解决方法_sqlserver2008数据库可疑在企业使用SQLServer时,有时会因为各种原因遇到SQLServer数据库置疑的情况,那么是什么原因产生数据库置疑呢?对于这样的问题要如何预防?遇到后要如何解决呢?本文主要对这几个疑问进行解答。

    2022年4月19日
    675
  • 关于苹果审核反馈的17.2

    关于苹果审核反馈的17.2

    2021年9月5日
    73
  • s3c2440时钟频率「建议收藏」

    s3c2440时钟频率「建议收藏」分类:LINUX++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载!转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6555734++++++++++++++++++++++++++++++++++++++++++系统时钟MINI2440开发板

    2022年6月14日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号