博客
关于我
opencv27-轮廓发现
阅读量:792 次
发布时间:2023-02-23

本文共 1897 字,大约阅读时间需要 6 分钟。

今天,我们将学习如何使用OpenCV进行图像轮廓检测。通过本文的步骤,您将能够创建一个能够检测并绘制图像轮廓的C++程序。

实现代码

#include 
#include
#include
using namespace cv;using namespace std;Mat src, temp, dst;int threshold_value = 100;int threshold_max = 255;char *output = "output image";RNG rng;void COutours_Demo(int, void*);int main() { // 加载图像 src = imread("E:\\vs2015\\opencvstudy\\27police.jpg"); if (!src.data) { cout << "could not load image!" << endl; return -1; } imshow("inputImage", src); // 转换为灰度图像 cvtColor(src, src, CV_BGR2GRAY); imshow("grayImage", src); // 创建滑动条 namedWindow(output, CV_WINDOW_AUTOSIZE); createTrackbar("Size", output, &threshold_value, threshold_max, COutours_Demo); COutours_Demo(0, 0); waitKey(0); return 0;}void COutours_Demo(int, void*) { Mat canny_output; Canny(src, canny_output, threshold_value, threshold_value * 2, 3, false); vector
contours; vector
hierarchy; findContours(canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0)); dst = Mat::zeros(src.size(), src.type()); RNG rng(12345); for (size_t i = 0; i < contours.size(); i++) { Vec3b color = Vec3b(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); drawContours(dst, contours, i, color, 2, 8, hierarchy, 0, Point(0, 0)); } imshow(output, dst);}

步骤解释

  • 加载图像:使用imread函数加载输入图像。如果图像无法加载,程序会输出错误信息并退出。

  • 转换为灰度图像:使用cvtColor将源图像转换为灰度图像,以便后续的轮廓检测。

  • 创建滑动条:使用createTrackbar创建一个滑动条,用户可以通过滑动条调整阈值值,从而改变轮廓检测的结果。

  • 检测轮廓:调用findContours函数,使用Canny算法检测图像中的轮廓,并将结果存储在contourshierarchy中。

  • 绘制轮廓:使用drawContours函数绘制轮廓,并为每个轮廓选择随机的颜色显示。

  • 显示结果:最后使用imshow函数显示最终的轮廓图像,并通过waitKey函数等待用户输入后退出程序。

  • 注意事项

    • 确保OpenCV库和相关头文件已经正确安装并添加到项目路径中。
    • 在实际应用中,建议根据需要调整阈值和其他参数,以获得最佳的检测效果。
    • 如果检测到的轮廓不够清晰,可以尝试增加边缘检测的参数或调整Canny算法的阈值范围。

    希望本文的代码和解释能帮助您成功实现图像轮廓检测。如果有任何问题或需要进一步的帮助,请随时联系我。

    转载地址:http://pmsfk.baihongyu.com/

    你可能感兴趣的文章
    Open-Sora代码详细解读(2):时空3D VAE
    查看>>
    Open-Source Service Discovery
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    open3d-Dll缺失,未找到指定模块解决
    查看>>
    openai Midjourney代理服务 gpt大模型第三方api平台汇总 支持国内外各种大模型 持续更新中...
    查看>>
    OpenAll:Android打开组件新姿势【仅供用于学习了解ButterKnife框架基本原理】
    查看>>
    OpenASR 项目使用教程
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    OpenCV 3.1 imwrite()函数写入异常问题解决方法
    查看>>
    OpenCV 4.1.0版drawContours
    查看>>
    Opencv cv2.putText 函数详解
    查看>>
    opencv glob 内存溢出异常
    查看>>
    opencv Hog Demo
    查看>>
    opencv Hog学习总结
    查看>>
    opencv Mat push_back
    查看>>
    opencv putText中文乱码
    查看>>
    OpenCV Python围绕特定点将图像旋转X度
    查看>>
    opencv resize
    查看>>
    Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
    查看>>