opencv学习笔记十四:canny边缘检测
程序员文章站
2022-03-29 22:47:35
...
canny边缘检测步骤:
1、高斯模糊,去除噪声;
2、灰度转换;
3、计算题度;
4、非最大信号抑制;计算出来的梯度在各方向只保留梯度最大的,得到较细的边缘;
5、高低阈值连接:大于高阈值的保留,小于低阈值的舍弃,对于在高低阈值中间的,当其四领域或八领域内有高阈值的像素时,就将其连接,没有就舍弃。
#include<opencv2/opencv.hpp>
using namespace cv;
Mat src,gray_img, blur_img,canny_img,dst;
int value = 30;
void CallBack(int, void*);
int main(int arc, char** argv)
{
src = imread("1.jpg");
namedWindow("input",CV_WINDOW_AUTOSIZE);
imshow("input", src);
cvtColor(src, gray_img, CV_BGR2GRAY);
namedWindow("output", CV_WINDOW_AUTOSIZE);
createTrackbar("ThresholdValue", "output", &value, 255, CallBack);
CallBack(0, 0);
waitKey(0);
return 0;
}
void CallBack(int, void*) {
GaussianBlur(gray_img, blur_img, Size(3, 3), 10, 10);
int threshold1 = value;
int threshold2 = 2*value;
Canny(blur_img, canny_img, threshold1, threshold2, 3);
//dst.create(src.size(), src.type());
//src.copyTo(dst, canny_img);
imshow("output", canny_img);
}
其中src.copyTo(dst, canny_img)是将原图像src中canny_img对应的非零部分复制到dst中。
运行结果如下:
下一篇: 浮动(CSS笔记)
推荐阅读
-
基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
-
OpenCV图像处理教程C++(十五)边缘检测算法--sobel算子、拉普拉斯算子、Canny算子
-
python—opencv图像膨胀|图像腐蚀|图像边缘检测sobel算子/拉普拉斯算子/canny算子
-
Python实现Opencv cv2.Canny()边缘检测
-
opencv学习笔记二十五:Harris角点检测
-
OpenCV3之——边缘检测Canny算子的高阶用法
-
openCV学习笔记十七:摄像头中运动物体检测
-
(三)OpenCV中的图像处理之canny边缘检测和图像金字塔
-
基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
-
QT+opencv学习笔记(5)——霍夫直线检测、圆检测及椭圆检测