本文主要介绍的是OpenCV中Canny算子的使用,包括灰度图的canny检测和彩色canny边缘的检测。
检测结果如下图所示:
这里需要额外介绍一个函数:
voidMat::copyTo(OutputArray m, InputArray mask) const
含义:拷贝原图在mask中非零的值到目标图中。
官方文档原文如下:
void Mat::copyTo(OutputArray m, InputArray mask) const
Parameters: ● m – Destination matrix. If it does nothave a proper size or type before the operation, it is reallocated.
● mask – Operation mask. Its non-zeroelements indicate which matrix elements need to be copied.
OpenCV API Reference http://docs.opencv.org/2.4.9/modules/refman.html
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace cv;
int main()
{
//载入图像
Mat src=imread("1.jpg");
Mat out;
imshow("原图",src);
Canny(src,out,200,100,3);
imshow("灰度canny边缘",out);
//方法2
Mat dst;
//创建与src同类型一样大小的矩阵
dst.create(src.size(),src.type());
dst=Scalar::all(0);
//将src1的out2部分复制到dst
src.copyTo(dst,out);
imshow("彩色canny边缘",dst);
waitKey();
return 0;
}