OPENCV阈值显示窗口
基于opencv与c++
用于对所要操作的图像的阈值范围进行可视化;
通过拖动阈值的上限和下限滑条来得到所需区域的阈值范围(如,对车牌字符范围的提取)
具体操作如下:
#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace cv;
using namespace std;
#define WINDOW_NAME "灰度阈值操作"
void on_Threshold(int,void*);
int threshold_lower =0; //上限滑条值
int threshold_up = 255; //下限滑条值
const int MaxthresholdValue = 255; // 滑条的最大值
Mat image; //原图像
Mat gray; //灰度图
Mat result; //显示结果
int main(int argc,char** argv)
{
image = imread("./demo10/02.jpeg",1); //读取原图像
cvtColor(image,gray,COLOR_BGR2GRAY); //转换为灰度图像
namedWindow(WINDOW_NAME,1); //开启一窗口
imshow(WINDOW_NAME,gray); //最初显示原灰度图
//创建滑动条来控制阈值
createTrackbar("阈值上限", WINDOW_NAME, &threshold_lower, MaxthresholdValue, on_Threshold); //创建下限滑条
createTrackbar("阈值下限", WINDOW_NAME, &threshold_up, MaxthresholdValue, on_Threshold); //创建上限滑条
//初始化 阈值回调函数
on_Threshold(0,0);
waitKey(0);
return 0;
}
// 阈值回调函数
void on_Threshold(int,void*)
{
//调用阈值函数
threshold(gray,result,threshold_lower,0,THRESH_TOZERO); //低于下限置0
threshold(result,result,threshold_up,0,THRESH_TOZERO_INV); //高于上限置0
//更新效果图
imshow(WINDOW_NAME,result);
}
结果如下:
注:主要参考《OpenCV3编程入门》;车图片来源于网络.