dz论坛怎么做视频网站吗,河南网站顾问,高端网站鉴赏,企业网站开发服务合同返回:OpenCV系列文章目录#xff08;持续更新中......#xff09;
上一篇#xff1a;OpenCV如何模板匹配(59)
下一篇 :OpenCV检测凸包(61) 目标
在本教程中#xff0c;您将学习如何#xff1a;
使用 OpenCV 函数 cv::findContours使用 OpenCV 函数 cv::d rawContours … 返回:OpenCV系列文章目录持续更新中......
上一篇OpenCV如何模板匹配(59)
下一篇 :OpenCV检测凸包(61) 目标
在本教程中您将学习如何
使用 OpenCV 函数 cv::findContours使用 OpenCV 函数 cv::d rawContours
cv::findContours 和 cv::drawContours 都是 OpenCV 库中常用的图像处理函数主要用于图像分割和轮廓绘制等操作。
cv::findContours 是一个用于在二值图像中查找轮廓的函数。它可以根据二值图像中的像素灰度值0 或非零来确定对象的轮廓并返回一个由所有轮廓点构成的向量。此外findContours 还可以实现轮廓间的层次结构分析进一步提高轮廓分析的精度。
cv::drawContours 则可以根据给定的轮廓向量对指定的图像进行轮廓绘制操作。它可以绘制轮廓内部、轮廓外边界、轮廓及其外边界也可以指定边界的颜色和宽度。通过 drawContours 函数我们可以将轮廓绘制在原图像中以便后续的图像分析和处理。
因此cv::findContours 和 cv::drawContours 通常会一起使用。通过 findContours 函数查找轮廓然后利用 drawContours 函数在原图像中绘制轮廓可以更好地实现图像分割和轮廓分析等操作。
C代码
本教程代码如下所示。您也可以从这里下载
#include opencv2/imgcodecs.hpp
#include opencv2/highgui.hpp
#include opencv2/imgproc.hpp
#include iostreamusing namespace cv;
using namespace std;Mat src_gray;
int thresh 100;
RNG rng(12345);void thresh_callback(int, void* );int main( int argc, char** argv )
{CommandLineParser parser( argc, argv, {input | HappyFish.jpg | input image} );Mat src imread( samples::findFile( parser.getString( input ) ) );if( src.empty() ){cout Could not open or find the image!\n endl;cout Usage: argv[0] Input image endl;return -1;}cvtColor( src, src_gray, COLOR_BGR2GRAY );blur( src_gray, src_gray, Size(3,3) );const char* source_window Source;namedWindow( source_window );imshow( source_window, src );const int max_thresh 255;createTrackbar( Canny thresh:, source_window, thresh, max_thresh, thresh_callback );thresh_callback( 0, 0 );waitKey();return 0;
}void thresh_callback(int, void* )
{Mat canny_output;Canny( src_gray, canny_output, thresh, thresh*2 );vectorvectorPoint contours;vectorVec4i hierarchy;findContours( canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE );Mat drawing Mat::zeros( canny_output.size(), CV_8UC3 );for( size_t i 0; i contours.size(); i ){Scalar color Scalar( rng.uniform(0, 256), rng.uniform(0,256), rng.uniform(0,256) );drawContours( drawing, contours, (int)i, color, 2, LINE_8, hierarchy, 0 );}imshow( Contours, drawing );
}
结果
在这里 参考文献
1、《Finding contours in your image》-----Ana Huamán