【OpenCV】基于cv2的图像阈值化处理【超详细的注释和解释】掌握基本操作
说在前面的话
博主今天给大家带来人工智能的一个重要领域的入门操作,opencv包的使用和基本操作,希望大家可以从中学到一些东西!
前言
那么这里博主先安利一下一些干货满满的专栏啦!
手撕数据结构这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支持一下吧!
https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482算法专栏
https://blog.csdn.net/yu_cblog/category_11464817.html
原图像展示

今天博主将会用这张图像作为例子,给大家展示一些阈值处理的操作
一、OpenCV图像阈值化处理函数
函数原型:
ret,dst = threshold(src,thresh,maxval,type)
src :源图像
thresh: 阈值(127/128是我们常用的阈值)
maxval: 当像素超过阈值(小于等于阈值)所赋予的值,否则取0
ret: 阈值返回值(阈值设定的是多少)
dst: 输出的图像
type: 处理方式
二、二值化THRESH_BINARY与二值化翻转THRESH_BINARY_INV处理
二值化:
处理方式:通道像素值超过阈值的取maxval,通道像素值低于阈值的取0
def test1():
img = cv2.imread(r"C:\Users\Administrator\Desktop\test4.jpg", 1) # 图片路径
ret,img1=cv2.threshold(img,127,255,cv2.THRESH_BINARY) # 二值化
cv2.imshow('img1',img1)
cv2.waitKey(0)
test1()
处理结果:

二值化翻转:
处理方式:和二值化相反
def test1():
img = cv2.imread(r"C:\Users\Administrator\Desktop\test5.jpg", 1)
ret,img1=cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) # 二值化翻转
cv2.imshow('img1',img1)
cv2.waitKey(0)
test1()
处理结果:

三、THRESH_TRUNC处理
trunc其实就是截断的意思
处理方式:超过阈值取阈值,低于阈值取自身
def test3():
img = cv2.imread(r"C:\Users\Administrator\Desktop\test.jpg", 0)
cv2.imshow('img',img)
# 3.THRESH_TRUNC 超过阈值取阈值,低于阈值取自身
ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
cv2.imshow('img1',img1)
cv2.waitKey(0)
test3()
处理结果:
处理后的图片:
原图:


四、THRESH_TOZERO与THRESH_TOZERO_INV处理
处理方式:
THRESH_TOZERO:超过阈值不变,低于阈值取0
THRESH_TOZERO_INV:超过阈值取0,低于阈值取不变
def test4():
img = cv2.imread(r"C:\Users\Administrator\Desktop\test5.jpg", 1)
cv2.imshow('img',img)
# 4.THRESH_TOZERO 超过阈值不变,低于阈值取0
# 5.THRESH_TOZERO_INV 取反 -- 超过阈值取0,低于阈值取不变
ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,img1=cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
cv2.imshow('img1',img1)
cv2.waitKey(0)
print(ret)
test4()
处理结果:
THRESH_TOZERO:
原图:


THRESH_TOZERO_INV:
原图:


总结
看到这里 相信大家对这方面的内容有了一定的理解了吧?如果你感觉这篇文章对你有帮助的话,希望你可以持续关注,订阅专栏,点赞收藏都是我创作的最大动力!
( 转载时请注明作者和出处。未经许可,请勿用于商业用途 )
更多文章请访问我的主页
@背包
https://blog.csdn.net/Yu_Cblog?spm=1000.2115.3001.5343
【OpenCV】基于cv2的图像阈值化处理【超详细的注释和解释】掌握基本操作的更多相关文章
- opencv学习之路(13)、图像阈值化threshold
一.图像阈值化简介 二.固定阈值 三.自适应阈值 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src ...
- opencv之图像阈值化处理
一.函数简介 1.threshold-图像简单阈值化处理 函数原型:threshold(src, thresh, maxval, type, dst=None) src:图像矩阵 thresh:阈值 ...
- 图像阈值化-threshold、adaptivethreshold
在图像处理中阈值化操作,从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体).这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割.open ...
- OpenCV学习笔记(7)——图像阈值
简单阈值,自适应阈值,Otsu's二值化等 1.简单阈值 当像素值高于阈值时,我们给这个像素赋予一个新值,否则给他赋予另一个值.这个函数就是cv2.threshhold().这个函数的第一个参数就是原 ...
- opencv2函数学习之threshold:实现图像阈值化
在opencv2中,threshold函数可以进行阈值化操作. double threshold( const Mat& src, Mat& dst, double thresh,do ...
- 【学习opencv第七篇】图像的阈值化
图像阈值化的基本思想是,给定一个数组和一个阈值,然后根据数组中每个元素是低于还是高于阈值而进行一些处理. cvThreshold()函数如下: double cvThreshold( CvArr* s ...
- 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理具体解释
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行解说.主要通过MFC单文档视图实现显示BMP图片点运算处理.包含图像灰度线性变换 ...
- OpenCV阈值化处理
图像的阈值化就是利用图像像素点分布规律,设定阈值进行像素点分割,进而得到图像的二值图像.图像阈值化操作有多种方法,常用方法有经典的OTSU.固定阈值.自适应阈值.双阈值及半阈值化操作.这里对各种阈值化 ...
- Emgu学习之(四)——图像阈值
http://www.cnblogs.com/CoverCat/p/5043833.html Visual Studio Community 2015 工程和代码:http://pan.baidu.c ...
- 【转】Emgu 图像阈值
原文地址:http://www.cnblogs.com/CoverCat/p/5043833.html 转载,备查 Visual Studio Community 2015 工程和代码:http:// ...
随机推荐
- 基于 eBPF 的 Serverless 多语言应用监控能力建设
作者:竞霄 监控能力作为基础运维能力和核心稳定性措施,开发运维人员可以通过监控系统有效进行故障定位,预防潜在风险,分析长期趋势进行容量规划和性能调优,是软件开发生命周期中必不可少的一环.与此同时,Se ...
- P1765
和那道题一样,这次用的getchar,结果对了可是洛谷评测WA了,换成scanf单个字符,结果还是WA了,换成直接getline读入整个字符串就对了. 可见读入单个字符的方式有可能出现各种小错,尤其是 ...
- C# 几种常见数据结构(数组、链表、Hash表)
一.内存上连续存储,节约空间,可以索引访问,读取快,增删慢 Array: 在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快--增删慢,长度不变 { //Array:在内存上连续分配的,而 ...
- [译] kubernetes:kube-scheduler 调度器代码结构概述
本文翻译自 https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduli ...
- git或gitee 提交代码到远程仓库
本文为博主原创,未经允许不得转载: 1. 选中远程仓库,并fork 指定的项目到自己的私仓: fork 之后,打开我的仓库便能看到刚刚fork 的项目. 2. clone 项目代码到自己电脑的本地仓库 ...
- ClickHouse的Join算法
ClickHouse的Join算法 ClickHouse是一款开源的列式分析型数据库(OLAP),专为需要超低延迟分析查询大量数据的场景而生.为了实现分析应用可能达到的最佳性能,分析型数据库(OLAP ...
- [转帖]Jmeter学习笔记(十)——元件的作用域和执行顺序
https://www.cnblogs.com/pachongshangdexuebi/p/11582891.html jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序 ...
- [转帖]linux求数组的交集,shell/bash 交集、并集、差集
方法一(直接用文件名):取两个文本文件的并集.交集.差集 并: sort -m 交: sort -m 差 file1 - file2: sort -m 方法二(用变量参数):取两个文本文件的并集.交集 ...
- [转帖]OpenAI 道歉:Redis bug 致 ChatGPT 故障、数据泄露
https://www.163.com/dy/article/I0N6HEIT0511D6RL.html OpenAI表示,Redis的开源库bug导致了发生在周一的ChatGPT故障和数据泄露事件, ...
- [转帖]awk命令 去掉重复行
https://developer.aliyun.com/article/885946?spm=a2c6h.24874632.expert-profile.263.7c46cfe9h5DxWK lin ...
