网站建设开发合同书(终极版),大人室内设计网,网站开发算是软件开发,建设工程管理网站OPENCV中最常用的边界检测是CANNY函数 下面展示它的用法 通常输入一个灰度图像#xff08;边界一般和颜色无关#xff09;这样也可以简化运算cv::Canny(inmat , outmat , therhold1, therhold2 ) 第一个参数是输入的灰度图像#xff0c;第二个是输出的图像这两个参数都是引用… OPENCV中最常用的边界检测是CANNY函数 下面展示它的用法 通常输入一个灰度图像边界一般和颜色无关这样也可以简化运算cv::Canny(inmat , outmat , therhold1, therhold2 ) 第一个参数是输入的灰度图像第二个是输出的图像这两个参数都是引用类型很方便下面的两个是门槛一个是低阈值门槛一个是高阈值门槛只有高于低阈值的才算边界高于高阈值的算是强边界你说值怎么取CV本来就是很唯心的学科这些参数肯定要自己调试了在不同的实用环境中值不一样一般来说保证TH2是TH 1的两倍到三倍即可
#include opencv2/opencv.hpp
#include iostream
#include vectorint main() {cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR);// 读取PNG图像cv::Mat image cv::imread(PIC.jpg, cv::IMREAD_COLOR);if (image.empty()) {std::cerr 无法读取图像文件 std::endl;return -1;}// 转换为灰度图像cv::Mat gray;cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);// 初始化边缘图像向量std::vectorcv::Mat edges(5); // 初始化大小为5的向量for (int i 0; i 5; i) {// 应用边缘检测Cannycv::Canny(gray, edges[i], i * 100, 150, 3);// 创建并调整窗口大小cv::namedWindow(edges std::to_string(i), cv::WINDOW_NORMAL); // 使用WINDOW_NORMAL标志允许调整窗口大小cv::resizeWindow(edges std::to_string(i), 800, 600); // 调整窗口大小为800x600// 显示边缘图像cv::imshow(edges std::to_string(i), edges[i]);}cv::waitKey();return 0;
}下面是程序的执行效果可以看出随着下门槛的提高边界越来越少 可见 1随着下阈值的提高强边缘被筛选出来 2随着下阈值的提高边缘信息越来越少 下面我们修改上阈值看看 cv::Canny(gray, edges[i], i * 100, 150*i, 3);0号图片是上门槛为0 的情况所以噪音很多上门槛不是越高越好可见234几乎没有信息可言 就这样。ψ(∇´)ψ