01-opencv中createTrackBar的使用-创新互联

最近在看opencv中实现canny边缘检测算子的例子时发现代码中为了改变canny边缘检测算子的低阈值而设置了一个trackbar, 之前对齐不是很了解就研究了一下,下面将代码中用trackbar的一句单拿出来进行分析:

聂拉木ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
createTrackbar("Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold);
	// "Min Threshold": trackbar的名字
	//window_name: 显示图片的窗口的名字
	//&lowThreshold: trackbar改变的参数的地址
	//max_lowThreshold: trackbar所改变的参数的大值
	// CannyThreshold: 回调函数,当用户通过trackbar改变参数值时会调用一次此回调函数
	//此回调函数中的参数均为全局变量 故所有地方均可以调用

使用trackbar进行canny边缘检测的结果如下:

可以通过改变上图中的trackbar的参数动态的调整边缘检测结果。本质就是人每修改一次结果,trackbar函数就会动态的调用一次边缘检测结果并重新显示,基于opencv的完整代码如下:

#include#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
//using namespace std;
using namespace cv;

Mat input,src, src_gray;
Mat dst, detected_edges;
int lowThreshold = 0;
const int max_lowThreshold = 100;
const int ratio = 3;
const int kernel_size = 3;
//const int max_kernel_size = 9;
const char* window_name = "Edge Map";

static void CannyThreshold(int, void*)
{
	blur(src_gray, detected_edges, Size(3, 3));
	Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
	dst = Scalar::all(0);
	src.copyTo(dst, detected_edges);
	imshow(window_name, dst);
	imshow("src", src);
}

int main()
{
	const char* input_path = "E:/ImageProcessing_C++/imgs/indoor.jpg";
	Mat input = imread(input_path, IMREAD_COLOR); // Load an image
	Size s = input.size();
	Mat image(0.3*s.height, 0.3*s.width, CV_8UC1);
	cv::resize(input, image, image.size());
	src = image.clone();
	if (src.empty())
	{
		std::cout<< "Could not open or find the image!\n"<< std::endl;
		return -1;
	}
	dst.create(src.size(), src.type());
	cvtColor(src, src_gray, COLOR_BGR2GRAY);
	namedWindow(window_name, WINDOW_AUTOSIZE);
	createTrackbar("Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold);
	// "Min Threshold": trackbar的名字
	//window_name: 显示图片的窗口的名字
	//&lowThreshold: trackbar改变的参数的地址
	//max_lowThreshold: trackbar所改变的参数的大值
	// CannyThreshold: 回调函数,当用户通过trackbar改变参数值时会调用一次此回调函数
	//此回调函数中的参数均为全局变量 故所有地方均可以调用
	CannyThreshold(0, 0);
	waitKey(0);
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:01-opencv中createTrackBar的使用-创新互联
标题链接:http://pwwzsj.com/article/ccjedc.html