Opencv实现利用滑动条来调整阈值

#include <opencv2/opencv.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*);	//回调函数//*--------------------------【主函数】-------------------------------------*/
int main()
{//【1】读入原图片g_srcImage = imread("D:\\opencv_picture_test\\阈值处理\\硬币.png", 2|4);if (g_srcImage.empty()){printf("Could not find the image!\n");return -1;}//【2】存留原图的灰度图cvtColor(g_srcImage, g_grayImage, COLOR_RGB2GRAY);namedWindow(WINDOW_NAME, WINDOW_NORMAL);//WINDOW_NORMAL允许用户自由伸缩窗口//【3】创建窗口 并 显示原图imshow("原始图", g_srcImage);//【4】创建滑动条来控制阈值createTrackbar("模式",WINDOW_NAME,&g_nThresholdType,4,on_Threshold);createTrackbar("参数值", WINDOW_NAME, &g_nThresholdValue,255, on_Threshold);//【5】初始化自定义的阈值回调函数on_Threshold(0,0);//【6】输出一些帮助信息ShowHelpText();//【7】轮询等待用户按键,如果ESC键按下则退出程序while (1){if (waitKey(10) == 27) break;		//按下Esc 退出}return 0;
}//*--------------------------【on_Threshold 函数】-------------------------------------*/
void on_Threshold(int, void*)
{//调用阈值函数threshold(g_grayImage, g_dstImage, g_nThresholdValue, 255, g_nThresholdType);//其它参数很好理解,我们来看看第五个参数,第五参数有以下几种类型//	0: THRESH_BINARY  当前点值大于阈值时,取Maxval, 也就是第四个参数,下面再不说明,否则设置为0//	1 : THRESH_BINARY_INV 当前点值大于阈值时,设置为0,否则设置为Maxval//	2 : THRESH_TRUNC 当前点值大于阈值时,设置为阈值,否则不改变//	3 : THRESH_TOZERO 当前点值大于阈值时,不改变,否则设置为0//	4 : THRESH_TOZERO_INV  当前点值大于阈值时,设置为0,否则不改变//更新效果图imshow(WINDOW_NAME,g_dstImage);
}//-----------------------------------【ShowHelpText( )函数】-----------------------------
//          描述:输出一些帮助信息
//----------------------------------------------------------------------------------------------
void ShowHelpText()
{//输出一些帮助信息printf("\n\n\n\tg_nThresholdType 参数有以下几种类型\n");printf("\n\n\t0: THRESH_BINARY  当前点值大于阈值时,取Maxval, 也就是第四个参数,下面再不说明,否则设置为0\n");printf("\n\n\t1 : THRESH_BINARY_INV 当前点值大于阈值时,设置为0,否则设置为Maxval\n");printf("\n\n\t2 : THRESH_TRUNC 当前点值大于阈值时,设置为阈值,否则不改变\n");printf("\n\n\t3 : THRESH_TOZERO 当前点值大于阈值时,不改变,否则设置为0\n");printf("\n\n\t4 : THRESH_TOZERO_INV  当前点值大于阈值时,设置为0,否则不改变\n");printf("\n\n\t按下esc 退出循环\n");
}

效果如下:
效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

07-对图像进行膨胀操作

形态学中的膨胀操作即让照片变得更大&#xff0c;与腐蚀操作互为逆运算 cv2.dilate(erosion,kernel,iterations 1) 第一个参数&#xff1a;图像对象名称 第二个参数&#xff1a;卷积核的大小 第三个参数&#xff1a;迭代次数 此时就可与腐蚀操作进行相结合&#xff0c;腐蚀去毛…

Java LocalDate类| parse()方法与示例

LocalDate类parse()方法 (LocalDate Class parse() method) Syntax: 句法&#xff1a; public static LocalDate parse(CharSequence c_seq);public static LocalDate parse(CharSequence c_seq, DateTimeFormatter fmtr);parse() method is available in java.time package. …

Xhtml学习笔记

1. XHTML 是什么&#xff1f; XHTML 指可扩展超文本标签语言&#xff08;EXtensible HyperText Markup Language&#xff09;。 XHTML 的目标是取代 HTML。 XHTML 与 HTML 4.01 几乎是相同的。 XHTML 是更严格更纯净的 HTML 版本。 XHTML 是作为一种 XML 应用被重新定义的 HTML…

08-开运算和闭运算

开运算和闭运算实则就是将腐蚀操作和膨胀操作结合而已&#xff0c;也就是个先后循序罢了 开运算&#xff1a;先腐蚀再膨胀 闭运算&#xff1a;先膨胀再腐蚀 cv2.morphologyEx(img_open,cv2.MORPH_OPEN,kernel) cv2.morphologyEx(img_close,cv2.MORPH_CLOSE,kernel) 第一个参数…

连通域标记——实现硬币自动计件

前言 在自动计算图像中有几枚硬币的任务中&#xff0c;分离出前景和背景后是否就可以马上实现自动计件&#xff0c;如果可以&#xff0c;如何实现&#xff1f;如果不可以&#xff0c;为什么&#xff1f; 答案是否定的。二值化之后我们的得到的只是前景总像素的多少&#xff0c…

Storm资料汇总

一、Storm集群安装部署 网上关于storm集群部署都大同小异。 Storm下载地址&#xff1a;http://storm-project.net Storm项目地址&#xff1a;https://github.com/nathanmarz/storm 目前的版本不支持ZooKeeper3.4.5版本&#xff0c;而支持ZooKeeper3.3.3版本。 我当时没注意这…

getlong_Java即时类| 带示例的getLong()方法

getlong即时类getLong()方法 (Instant Class getLong() method) getLong() method is available in java.time package. getLong()方法在java.time包中可用。 getLong() method is used to get the value as long for the given temporal field from this Instant. getLong()方…

python作品阐述_Python网络编程基础的作品鉴赏-

Python网络编程基础的作品鉴赏Python网络编佳入门图书&#xff01;175个完整&#xff0c;实践出真知&#xff0c;SocketsDNS、Web Service、FTP、Email、SMTP、POP、IMAP、SocketServe、CGI、XML、Forking、数据库客户端、多线程、异步通信……完整涵盖网络编程的方方面面“这可…

09-梯度运算

梯度运算膨胀操作-腐蚀操作&#xff0c;这里的-操作是图像的减法&#xff0c;可不是简单的加减乘除运算 为了更加形象生动&#xff0c;先将膨胀和腐蚀操作的结果进行合并展示&#xff0c;然后再与梯度运算进行比较 cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel) 第一个参数…

JavaScript学习笔记-我的浅显认识

一&#xff1a;什么是javascript? 它是一种基于对象和事件驱动的解释性的安全的与平台无关的免费的浏览器脚本语言。 二&#xff1a;有什么用途&#xff1f; 使表单的验证放在客户端&#xff0c;更快捷反应&#xff0c;增强网页的交互性。设计一些特效&#xff0c;如菜单&…

典型瀑布模型四个阶段_古典瀑布模型的不同阶段

典型瀑布模型四个阶段The different phases that are included in the classical waterfall model are: 经典瀑布模型包含的不同阶段是&#xff1a; Feasibility study 可行性研究 Requirement analysis and specification 需求分析和规范 Design 设计 Coding and unit testin…

Unity-Shader-渲染队列

Unity-Shader-渲染队列 渲染简介Unity中的几种渲染队列Background (1000)最早被渲染的物体的队列。Geometry (2000) 不透明物体的渲染队列。大多数物体都应该使用该队列进行渲染&#xff0c;也就是Unity Shader中默认的渲染队列。AlphaTest (2450) 有透明通道&#xff0c;需要进…

MyBatis ResultMap(2)

SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace&#xff0c;一般定义为对应的接口类的路径。写好SQL语句映射文件后&#xff0c;需要在MyBAtis配置文件mappers标签中引用&#xff0c;例如&#xff1a; Xml代码 <mappers> <mapper resource&qu…

形态学操作——腐蚀与膨胀

预备知识 结构元&#xff08;SE&#xff09; 1、结构元的中心一般来说是放在其重心位置处&#xff0c;但原则上原点的选择是依赖于你要解决的问题的。 2、对图像操作时&#xff0c;我们要求结构元是矩形阵列。&#xff08;在结构元的基础上添加较少的背景元素实现&#xff09…

java集合转换_java各种集合的转换

内容&#xff1a;1、List转Array 2、Array转List3、String转int[],String[](对单个字符) 4、数组、List、Set、Map相互转换5、一行输入多个元素方法常用集合&#xff1a;Map、Set、List、Array、String1、List转Array&#xff…

10-礼帽与黑帽操作

cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) 第一个参数&#xff1a;图像对象名称 第二个参数&#xff1a;运算类型TOPHAT为礼帽运算 第三个参数&#xff1a;卷积核的大小 礼帽运算&#xff1a;原始的输入-开运算&#xff08;先腐蚀再膨胀&#xff09; 原始带刺儿&#xff…

2011 cnblogs开通--给力吧

在信息传递如此迅速的时代&#xff0c;自己慢慢的老去&#xff0c;是否要想写些什么&#xff0c;跟大家一起分享学习、工作、生活的酸甜苦辣&#xff0c;提高自己的各方面的能力;往后将慢慢记录自己的程序人生吧&#xff0c;就什么多了&#xff0c;作为自己cnblogs第一篇吧^_^转…

Android----获取activity上所有的控件

01/**02 * note 获取该activity所有view03 * author liuh04 * */05 public List<View> getAllChildViews() {06 View view this.getWindow().getDecorView();07 return getAllChildViews(view);08 }09 10 private List<View> …

微信小程序 查找兄弟节点_使用C ++程序在链接列表中查找节点

微信小程序 查找兄弟节点Given a linked list and an integer N, you need to find and return index where N is present in the Linked List. Return -1 if n is not present in the Linked List. 给定一个链表和一个整数N&#xff0c;您需要查找并返回索引&#xff0c;其中链…

形态学操作——开闭运算、顶帽底(黑)帽变换

膨胀和腐蚀运算的问题&#xff1a; 边缘形状发生了变化&#xff0c;膨胀发生了扩张&#xff0c;腐蚀发生了收缩 目标物体变形&#xff0c;对识别时的特征提取会造成影响 解决方法&#xff1a; 开操作: B对A的开操作就是先B对A腐蚀&#xff0c;紧接着用B对结果进行膨胀 先腐…