python学opencv|读取图像(三十三)阈值处理图像-限定像素
【1】引言
前序我们已经掌握分解图像的通道,设置各个通道的RGB值,相关文章包括且不限于:
python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客
python学opencv|读取图像(十五)BGR图像和HSV图像通道合并_bgr hsv-CSDN博客
也学会了对于较为简单的灰度图像进行像素操作:
python学opencv|读取图像(六)读取图像像素RGB值_python 获取图片像素点颜色-CSDN博客
python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客
python学opencv|读取图像(十)用numpy创建彩色图像_python numpy图像-CSDN博客
有时候,如果我们想粗犷一些处理像素,也就是把图像的像素约束在某一些范围内,也就是做阈值限定,这时候就要在先前的学习基础上,应用一个新的函数:cv2.threshold()。
【2】官网教程
点击下方连链接,直达官网教程:
OpenCV: Miscellaneous Image Transformations
在这里,将会看到对 cv2.threshold()函数的说明:

图1
这里的参数意义为:
double cv::threshold ( InputArray src, #输入图像
OutputArray dst, #输出图像
double thresh, #阈值下限-阈值开关
double maxval, #阈值上限
int type ) #阈值处理类型,暂不是重点,无需关注
需要说明的是,一旦达到阈值下限,图像的RGB值会直接等于阈值上限;而未达到阈值下限时,图像的RGB值会直接等于0。
所以,这个阈值下限,本身孩子一个阈值开关,大于它的都取上限,小于它的都是0.
【3】代码测试
【3.1】代码
为了测试这个阈值的效果,我们做一下代码测试。
首先引入图像:
import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src = cv.imread('scasrcf.png',0)
dst=src#输出图像
这里直接把输入图像转化为灰度图像了。
然后是调用cv2.threshold()函数,尝试不同的阈值类型:
t1,dst1=cv.threshold(src,58,158,cv.THRESH_BINARY) #阈值开关58,阈值上限158
t2,dst2=cv.threshold(src,100,255,cv.THRESH_BINARY) #阈值开关100,阈值上限255
t3,dst3=cv.threshold(src,0,255,cv.THRESH_BINARY) #阈值开关0,阈值上限255
之后就是对这些阈值函数进行效果输出和保存:
#展示图像
cv.imshow('srcf', dst) # 在屏幕展示效果
cv.imshow('srcft1', dst1) # 在屏幕展示效果
cv.imshow('srcft2', dst2) # 在屏幕展示效果
cv.imshow('srcft3', dst3) # 在屏幕展示效果#保存图像
cv.imwrite('srcf-m.png', dst) # 保存图像
cv.imwrite('srcf-m-t1.png', dst1) # 保存图像
cv.imwrite('srcf-m-t2.png', dst2) # 保存图像
cv.imwrite('srcf-m-t3.png', dst3) # 保存图像
cv.waitKey() # 图像不会自动关闭
cv.destroyAllWindows() # 释放所有窗口
【3.2】效果
为了分辨清楚图像效果,首先我们看原图:

图2 原图
读取图像后转化的灰度图为:

图3 灰度图
然后是阈值开关58,阈值上限158的转换效果:

图4 阈值开关58,阈值上限158
然后是阈值开关100,阈值上限255的转换效果:

图5 阈值开关100,阈值上限255
然后是阈值开关0,阈值上限255:

图6 阈值开关0,阈值上限255
实际上,图6不是纯白色图片,因为还有一些RGB=0的位置,所以图6中有一些零零散散的黑色线条。
【4】细节说明
调用cv2.threshold()函数时,应该按照下述形式:
t1,dst1=cv.threshold(src,58,158,cv.THRESH_BINARY)
这里的t1不可少,可以暂时理解为:为了把各个未知的RGB值转换为0或者阈值上限,t1是一个中间过渡值。
【5】总结
掌握了python+opencv获得阈值处理图像,也就是限定像素图像的技巧。
相关文章:
python学opencv|读取图像(三十三)阈值处理图像-限定像素
【1】引言 前序我们已经掌握分解图像的通道,设置各个通道的RGB值,相关文章包括且不限于: python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客 python学opencv|读取图像(十五)B…...
QT Quick QML 实例之椭圆投影,旋转
文章目录 一、前言二、演示三、部分代码与分析 QML 其它文章请点击这里: QT QUICK QML 学习笔记 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 一、前言 此 Demo 主要用于无人机吊舱视角的模拟…...
炸砖块游戏的最终图案
描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…...
LLM的实验平台有哪些:快速搭建测试大语言模型
LLM的实验平台有哪些:快速搭建测试大语言模型 目录 LLM的实验平台有哪些:快速搭建测试大语言模型低代码平台工程观测平台本地应用平台在线编程竞技场性能排名代码质量评估开源框架Hugging Face是一个机器学习和数据科学平台及社区主要功能开源工具与库应用场景优势低代码平台…...
python3GUI--大屏可视化-XX产业大数据指挥舱(附下载地址) By:PyQt5
文章目录 一.前言二.预览三.软件开发心得1.使用方法2.UI设计3.代码架构4.项目结构 四.代码片段分享1.图片平滑缩放组件2.滚动日志组件 五.心得体会 大小:35.0 M,软件安装包放在了这里! 本软件未…...
.NET 9.0 的 Blazor Web App 项目中 Hash 变换(MD5、Pbkdf2) 使用备忘
一、生成 string 对应的 MD5 码 /// <summary>/// 生成 string 对应的 MD5 码/// </summary>/// <param name"str">需要转换的字符串 string:用于登录认证时,str username 线下传递的key DateTime.Now.Ticks.ToString() …...
uniapp 抖音小程序 getUserProfile:fail must be invoked by user tap gesture
项目场景: uniapp 抖音小程序 getUserProfile:fail must be invoked by user tap gesture,在实现点击头像需要出发抖音小程序获取用户原生头像的操作中,无论如何也无法触发抖音的原生窗口! 问题描述 这个问题我找了很多博主的方法ÿ…...
(undone) MIT6.S081 2023 学习笔记 (Day5: LAB4 traps)
LAB 网页:https://pdos.csail.mit.edu/6.S081/2023/labs/traps.html 任务1:RISC-V assembly (完成) 初步看问题要求,这是一道文科题(问答题) 在你的 xv6 仓库中有一个文件 user/call.c。执行 make fs.img 会对其进行编译,并生成…...
前端笔记----
在我的理解里边一切做页面的代码都是属于前端代码。 之前用过qt框架,也是用来写界面的,但是那是用来写客户端的,而html是用来写web浏览器的,相较之下htmlcssJavaScript写出来的界面是更加漂亮的。这里就记录我自个学习后的一些笔…...
学习华为熵减,激发组织活力
目录 为什么学习华为? 学习华为什么? 一、势:顺势而为,在风口上猪都会飞起来。 二、道:就是认识和利用规律层面,文化和制度创新就是企业经营之道。 三、法:就是一套价值管理的变革方法论。…...
9Hive数据倾斜
这里写目录标题 数据倾斜问题剖析数据倾斜解决方案1. 空值引发的数据倾斜2. 不同数据类型引发的数据倾斜3. 不可拆分大文件引发的数据倾斜4. 数据膨胀引发的数据倾斜5. 表连接时引发的数据倾斜6. 确实无法减少数据量引发的数据倾斜 总结 数据倾斜问题剖析 数据倾斜是分布式系统…...
【大数据】机器学习 -----关于data.csv数据集分析案例
打开表 import pandas as pd df2 pd.read_csv("data.csv",encoding"gbk") df2.head()查看数据属性(列标题,表形状,类型,行标题,值) print("列标题:",df2.columns)Data…...
深入解析 C++ 类型转换
简介 C 类型转换是开发者必须掌握的重要技能之一, 无论是处理隐式转换还是显式转换, 理解其背后的机制与用法至关重要. 本篇博客旨在从基础到高级全面解析 C 的类型转换, 包括实际开发中的应用场景和性能分析. 自动转换 隐式类型转换 编译器可以在无需明确指示的情况下, 将一…...
C++ union 联合(八股总结)
union(联合体)允许在同一内存位置上存储不同的数据类型,所有成员共享相同的内存空间。 内存布局 由于联合体的所有成员都共享同一块内存,因此联合体的大小是其最大成员的大小。联合体的实际大小取决于其最大成员的类型和对齐要求…...
聊聊AI Agent
什么是AI Agent? AI Agent指的是一种使用人工智能技术的自主实体,它能够感知环境、做出决策,并采取行动以实现特定目标。AI Agent的核心思想是它能够独立运作,基于输入信息做出有根据的决策,并通过学习算法不断提高自…...
scala代码打包配置(maven)
目录 mavenpom.xml打包配置项(非完整版,仅含打包的内容< build>)pom.xml完整示例(需要修改参数)效果说明 maven 最主要的方式还是maven进行打包,也好进行配置项的管理 以下为pom文件(不要…...
慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)
3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置࿱…...
C++使用minio-cpp库在minio中创建bucket
直接看代码 #include <iostream> #include <string>#include "miniocpp/client.h"int main() {minio::s3::BaseUrl baseUrl("base url");minio::creds::StaticProvider staticProvider("access key", "secret key");mini…...
【大模型】大语言模型的数据准备:构建高质量训练数据的关键指南
大语言模型的数据准备:构建高质量训练数据的关键指南 大语言模型(LLM, Large Language Model)的训练离不开高质量的数据,而数据准备是模型性能的基石。无论是预训练还是微调,数据的选择、清洗和标注都会直接影响模型的…...
【解决】okhttp的java.lang.IllegalStateException: closed错误
问题 Android 使用OKHttp进行后端通信,后端处理结果,反馈给前端的responseBody中其实有值,但是一直报异常,后来才发现主要是OkHttp请求回调中response.body().string()只能有效调用一次,而我使用了两次: 解…...
从USB转TTL接线到手机热点配网:ESP8266无线通信保姆级避坑指南(附软件包)
从USB转TTL接线到手机热点配网:ESP8266无线通信保姆级避坑指南 当你第一次拿起ESP8266模块时,可能会被这个小巧的Wi-Fi模块惊艳到——它只有指甲盖大小,却蕴含着强大的无线通信能力。但很快,这种惊艳就会变成困惑:为什…...
Kerberos身份认证原理与实战排错指南
1. 为什么今天还要花时间搞懂 Kerberos?——一个被低估的“老协议”正在悄悄支撑着你的日常你每天登录公司内网查邮件、访问财务系统提交报销、用 Jenkins 构建代码、甚至在 Windows 域环境中打开一台同事的共享文件夹……这些看似顺滑的操作背后,大概率…...
别再死记硬背SMO公式了!用Python手写一个SVM分类器,带你一步步拆解SMO核心逻辑
用Python手写SVM分类器:代码驱动理解SMO算法核心在机器学习领域,支持向量机(SVM)以其优秀的分类性能和坚实的数学基础著称。然而,许多学习者在理解其核心算法——序列最小优化(SMO)时,往往被复杂的数学推导所困扰。本文将采用一种…...
AI时代程序员职业发展与个人创业可行性研究报告
一、行业宏观变革(2026核心趋势数据佐证) 1.1 开发范式已彻底重构(行业不可逆拐点) 2026年正式进入AI Agent智能体开发时代,传统CRUD编码价值持续崩塌。 核心权威数据: Gartner预测:2026年75%企…...
BurpSuite 2025插件开发JDK版本兼容性实战指南
1. 为什么BurpSuite插件开发环境总在JDK版本上翻车?你是不是也经历过:下载好BurpSuite最新版2025.4,兴冲冲打开插件开发文档,照着官方示例写完第一个HelloWorld插件,一编译——java.lang.UnsupportedClassVersionError…...
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAss…...
GitLab External Wiki代理权限绕过漏洞深度解析
1. 这个漏洞不是“修个补丁”就能完事的——它暴露的是 GitLab 权限模型里一个被长期忽视的逻辑断层GitLab 安全漏洞 CVE-2025-2614,光看编号容易误以为是又一个常规的越权或 XSS 类型漏洞。但我在实际复现和审计过程中发现,它根本不是配置疏漏或代码拼写…...
保姆级教程:Windows系统下Arcgis 10.2从下载、安装到汉化一次搞定(附常见License启动失败解决方案)
Windows系统下Arcgis 10.2完整安装与汉化实战指南第一次接触Arcgis的新手往往会被复杂的安装流程和神秘的License Manager搞得晕头转向。作为一款功能强大的地理信息系统软件,Arcgis在科研、城市规划、环境监测等领域有着广泛应用,但它的安装过程确实会让…...
Unity动态自然系统:Forest Environment-Dynamic Nature深度解析
1. 这不是“贴图堆砌”,而是自然系统级建模:Forest Environment-Dynamic Nature 的真实定位你有没有试过在Unity里拖进几棵树、铺点草、加个天空盒,然后发现场景像一张静止的风景明信片——风不动、叶不摇、雨不落、雾不散?我做过…...
WebSocket实时通信架构进阶:Room、命名空间与集群部署
WebSocket实时通信架构进阶:Room、命名空间与集群部署 作者:Crown_22 | AI Agent & Hermes Agent 桌面程序开发者 前言 WebSocket已经成为实时应用的标准技术,但大多数教程只停留在"建立连接、发送消息"的基础阶段。在生产环境中,你需要处理Room管理、命名空…...
