参考: https://docs.opencv.org/3.4.5/da/d5c/tutorial_canny_detector.html
若有表达不当或错误欢迎留言指正,互相交流学习,共同进步
在本教程中,您将学习如何:
参考官方文档:https://docs.opencv.org/3.4.5/da/d5c/tutorial_canny_detector.html
void Canny( InputArray image,
OutputArray edges,
double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false);
第一个参数:输入图像(八位的图像)
第二个参数:输出的边缘图像
第三个参数:下限阈值,如果像素梯度低于下限阈值,则将像素不被认为边缘
第四个参数:上限阈值,如果像素梯度高于上限阈值,则将像素被认为是边缘(建议上限是下限的2倍或者3倍)
第五个参数:为Sobel()运算提供内核大小,默认值为3
第六个参数:计算图像梯度幅值的标志,默认值为false
#include
#include
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;
int main()
{ //
VideoCapture capture(0); //
//【2】循环显示每一帧 //
while (1) //
{ //
Mat image; //定义一个Mat变量,用于存储每一帧的图像 //
capture >> image; //读取当前帧 //
//================================================================
Mat gray, detected_edges,dst;
gray.create(gray.size(), gray.type());
detected_edges.create(detected_edges.size(), detected_edges.type());
dst.create(dst.size(), dst.type());
int kernel_size = 3;
int ratio = 3;
double lowThreshold = 65;
cvtColor(image, gray, CV_BGR2GRAY);
blur(gray, detected_edges, Size(3, 3));
Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
dst = Scalar::all(0);
image.copyTo(dst, detected_edges);
imshow("out", dst);
//================================================================
//
//
waitKey(30); //延时30ms //
} //
return 0; //
} //
int main()
{
VideoCapture capture(0);
//【2】循环显示每一帧
while (1) //
{ //
Mat image; //定义一个Mat变量,用于存储每一帧的图像 //
capture >> image; //读取当前帧 //
//================================================================
Mat gray, detected_edges,dst;
gray.create(gray.size(), gray.type());
detected_edges.create(detected_edges.size(), detected_edges.type());
dst.create(dst.size(), dst.type());
cvtColor(image, gray, CV_BGR2GRAY);
blur(gray, detected_edges, Size(3, 3));
Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
dst = Scalar::all(0);
image.copyTo(dst, detected_edges);
imshow("out", dst);