图像处理(7):示例程序:基本阈值操作
讲解完这个函数,让我们看一个调用示例程序,这个示例程序演示了基本阈值操作的方方面面。此程序可以通过按键,在不同的阈值模式之间切换,操作说明如图6.72所示。

//----------------—----【头文件、命名空间包含部分】--------------------
// 描述:包含程序所依赖的头文件和命名空间
//----------------------—-—-------------------------------------------
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
// ---------------------------【宏定义部分】---------------------------
// 描述:定义一些辅助宏
// -------------------------------------------------------------------
#define WINDOW_NAME "【程序窗口】"//为窗口标题定义的宏
//------------------------ - 【全局变量声明部分】-----------------------
//描述 : 全局变量的声明
//------------------------------------------------------------------------
int g_nThresholdvalue = 100;
int g_nThresholdType = 3;
Mat g_srcImage, g_grayImage, g_dstImage;
//------------------------ - 【全局函数声明部分】-------------------------
// //描述 : 全局函数的声明
// ----------—----------------------------------------------------------
static void ShowHelpText();//输出帮助文字
void on_Threshold( int,void* );//回调函数
// ------------ - —--— - —--------【 main()函数】------—————————-- - / /
//描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//------------------------------------------------------------------------------- -
int main()
{
// 【1】读入源图片
g_srcImage = imread("E:/pictures/2.jpg");
if (!g_srcImage.data) { printf("读取图片错误,请确定目录下是否有imread函数指定的图片存在~!ln"); return false; }
// 【2】存留一份原图的灰度图
cvtColor(g_srcImage, g_grayImage,
COLOR_RGB2GRAY);
// 【3】创建窗口并显示原始图
namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);
// 【 4】创建滑动条来控制阈值
createTrackbar("模式",
WINDOW_NAME, &g_nThresholdType, 4, on_Threshold);
createTrackbar("参数值",
WINDOW_NAME, &g_nThresholdvalue, 255, on_Threshold);
// 【5】初始化自定义的阈值回调函数on_Threshold(0, 0);
on_Threshold(0, 0);
// 【 6】轮询等待用户按键,如果ESC键按下则退出程序
while (1)
{
int key;
key = waitKey(20);
if ((char)key == 27)
{
break;
}
}
// ----------------------- 【 on_Threshold ()函数】--l l描述:自定义的阈值回调函数
//--------------------------
void on_Threshold(int, void*);
{
//调用阈值函数
threshold(g_grayImage, g_dstImage, g_nThresholdvalue, 255, g_nThresholdType);
//更新效果图
imshow(WINDOW_NAME, g_dstImage);
}
}
本文档介绍OpenCV中的图像处理示例,重点是基本阈值操作的运用。通过实例程序展示了如何在不同阈值模式间切换,帮助理解阈值处理的各种功能。
1642

被折叠的 条评论
为什么被折叠?



