12 OpenCv阈值处理

news/2024/5/16 11:55:43

文章目录

  • Halcon阈值处理
  • 概念
  • 阈值二值化
  • 阈值反二值化
  • 截断
  • 阈值取零
  • 阈值反取零
  • 算子
  • 示例

Halcon阈值处理

halcon 阈值处理

概念

阈值又叫临界值,是指一个效应能够产生的最低值或最高值。实际上是基于图片亮度的一个黑白分界值,默认值是50%中性灰,即128,亮度高于128(<50%的灰)的会变白,低于128(>50%的灰)的会变黑。从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。为了从一副图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断。(注意:阈值的选取依赖于具体的问题。即:物体在不同的图像中有可能会有不同的灰度值)。
在这里插入图片描述

阈值二值化

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
在这里插入图片描述

阈值反二值化

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
在这里插入图片描述

截断

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
在这里插入图片描述

阈值取零

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
在这里插入图片描述

阈值反取零

左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值
在这里插入图片描述

算子

double threshold( InputArray src, OutputArray dst,double thresh, double maxval, int type );
/*******************************************************************
*			src: 					输入图像
*			dst:					输出图像
*			thresh:					阈值的具体值
*			maxval:				 	 阈值的最大值
*			type:				 	 阈值操作类型
*********************************************************************/
//阈值操作类型
enum ThresholdTypes {THRESH_BINARY     = 0, 		//二进制THRESH_BINARY_INV = 1, 		//反二进制THRESH_TRUNC      = 2, 		//截断THRESH_TOZERO     = 3, 		//阈值化为0THRESH_TOZERO_INV = 4, 		//反阈值化为0THRESH_MASK       = 7,		//自适应阈值THRESH_OTSU       = 8,		//利用最大类间方差法(OTSU)求出对图像进行二值化处理的最佳阈值THRESH_TRIANGLE   = 16 		//三角算法选择最优阈值  
};

示例

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;Mat src, gray_src, dst;
int threshold_value = 127;
int threshold_max = 255;
int type_value = 2;
int type_max = 4;
const char* output_title = "binary image";
void Threshold_Demo(int, void*);
int main()
{src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load img...";return -1;}namedWindow(output_title);//设置窗口名称imshow(output_title, src);createTrackbar("Threshold Value:", output_title, &threshold_value, threshold_max, Threshold_Demo);createTrackbar("Type Value:", output_title, &type_value, type_max, Threshold_Demo);Threshold_Demo(0,0);//threshold(src, dst, 0, 188, 1);//imshow(output_title, dst);waitKey(0);return 0;
}
void Threshold_Demo(int, void*)
{//cvtColor(src, gray_src, COLOR_BGR2GRAY);threshold(src, dst, threshold_value, threshold_max, THRESH_BINARY| type_value);imshow(output_title, dst);
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【物联网应用案例】从0到N,智慧农业的数据价值

智慧农业全方位渗透到农业的每一个环节&#xff0c;云端解决方案更推动了研究人员、农艺师及农民间的密切协作&#xff0c;为研发企业提供了既经济又具扩展性的完美方案。 据IDC预计&#xff0c;到2036年&#xff0c;农场收集的数据量将增加800%以上&#xff0c;这凸显了农业数…

Linux安全--Apache HTTPD多后缀名解析漏洞

环境为Kali 1.漏洞复现 在valhub官网中找到靶场环境目录 找到指定目录 使用docker拉取镜像 使用burpsuite访问本机&#xff0c;发现提交表单的信息只能是.jpg。不能提交.php文件 使用BurpSuite捕捉 提交.php文件发现不行 这时我们将phpinfo.php后面加一个.jpg后缀就会提交成功…

【牛客】VL74 异步复位同步释放

描述 题目描述&#xff1a; 请使用异步复位同步释放来将输入数据a存储到寄存器中&#xff0c;并画图说明异步复位同步释放的机制原理 信号示意图&#xff1a; clk为时钟 rst_n为低电平复位 d信号输入 dout信号输出 波形示意图&#xff1a; 输入描述&#xff1a; clk为时…

Linux之线程控制

目录 一、POSIX线程库 二、线程的创建 三、线程等待 四、线程终止 五、分离线程 六、线程ID&#xff1a;pthread_t 1、获取线程ID 2、pthread_t 七、线程局部存储&#xff1a;__thread 一、POSIX线程库 由于Linux下的线程并没有独立特有的结构&#xff0c;所以Linux并…

2.模拟问题——7.九宫格键盘输入时间

输入 bob www 输出 7 7 【提交地址】 题目分析 九宫格键盘如图所示&#xff1a; 注意&#xff0c;题目中有两个对应关系需要注意&#xff1a; 第一&#xff0c;字母与按键次数的对应第二&#xff0c;字母与按键的对应&#xff0c;如果连续两次是不同的按键则不需要等待&…

MySQL-----存储过程

▶ 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0c;…