博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

OpenCV (十五)边缘检测算法canny算法

API介绍:

 

 

 

 

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

Mat src, dst;

int threshold_value = 38;
int threshold_max = 255;

void canny_demo(int, void*);

int main(int argc, char** argv) {
	src = imread("D:/OpenCVprj/image/test3.jpg");
	if (!src.data) {
		printf("Coluld not load image.....\n");
		return -1;
	}
	imshow("src", src);
	namedWindow("dst", CV_WINDOW_AUTOSIZE);
	createTrackbar("threshold", "dst", &threshold_value, threshold_max, canny_demo);
	canny_demo(0, 0);
	waitKey(0);
	return 0;
}

void canny_demo(int, void*) {
	Mat src_gray, temp;
	cvtColor(src, src_gray, COLOR_BGR2GRAY);
	blur(src_gray, src_gray, Size(3, 3), Point(-1, -1));
	Canny(src_gray, temp, threshold_value, threshold_value * 2, 3, true);
	dst.create(src.size(), src.type());
	src.copyTo(dst, temp);//第一种:A.copyTo(B),表示将A矩阵复制到B中;第二种:A.copyTo(B, mask),表示得到一个附加掩膜mask的矩阵B。
	imshow("dst", dst);
}

  

posted @ 2019-07-25 16:22  haibochina  阅读(1510)  评论(0编辑  收藏  举报