☞ ░ 前往老猿Python博文目录 ░

一、概述

openCV图像的阈值处理又称为二值化,之所以称为二值化,是它可以将一幅图转换为感兴趣的部分(前景)和不感兴趣的部分(背景)。转换时,通常将某个值(即阈值)当作区分处理的标准,通常将超过阈值的像素作为前景。

阈值处理有2种方式,一种是固定阈值方式,又包括多种处理模式,另一种是非固定阈值,由程序根据算法以及给出的最大阈值计算图像合适的阈值,再用这个阈值进行二值化处理,非固定阈值处理时需要在固定阈值处理基础上叠加组合标记,叠加方式就是与固定阈值方式的标记相或。

二、语法说明

调用语法:

retval, dst = cv2.threshold (src, thresh, maxval, type)

其中:

  • src:源图像,8位或32位图像的numpy数组
  • thresh:阈值,0-255之间的数字,在进行处理时以阈值为边界来设不同的输出,阈值判断时,是以小于等于阈值和大于阈值作为分界条件
  • maxval:最大阈值,当使用固定阈值方法时为指定阈值,当叠加标记时为允许最大的阈值,算法必须在小于该值范围内计算合适的阈值
  • type:处理方式,具体取值及含义如下:

  • dst:阈值化处理后的结果图像numpy数组,其大小和通道数与源图像相同
  • retval:叠加cv2.THRESH_OTSU或cv2.THRESH_TRIANGLE标记后返回真正使用的阈值

三、彩色图像处理

从threshold 的说明来看是支持32为彩色图像处理的,但网上几乎找不到关于处理彩色图像的机制说明及案例,经过老猿验证测试,对threshold 处理彩色图像的机制说明如下:

如果是32位彩色图像,则是以RGB每个通道的值单独与阈值进行比较,按每个通道进行阈值处理,返回的是一个阈值处理后的RGB各自的值,即还是32位图像。

案例:

	img1 = cv2.imread(r"F:\screenpic\redflower.jpg")
ret,img2 = cv2.threshold(img1, 35, 255, cv2.THRESH_BINARY)
cv2.imwrite(r"F:\screenpic\redflower_threshold.jpg",img2)

效果:

源图:

处理后图:

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

付费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》。

关于Moviepy音视频开发的内容,请大家参考《Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

☞ ░ 前往老猿Python博文目录 ░

OpenCV阈值处理函数threshold处理32位彩色图像的案例的更多相关文章

  1. JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5  16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...

  2. OpenCV阈值化处理

    图像的阈值化就是利用图像像素点分布规律,设定阈值进行像素点分割,进而得到图像的二值图像.图像阈值化操作有多种方法,常用方法有经典的OTSU.固定阈值.自适应阈值.双阈值及半阈值化操作.这里对各种阈值化 ...

  3. <转>32位移植到64位 注意事项

    32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么 ...

  4. VB.NET实现32位、64位远线程运行ASM,注入非托管、托管DLL

    这是一个老话题,远线程函数给我们提供了机会在其他进程中启动一个新线程,所以我们可以做很多事情.但事情远远没有结束,如果我们要做的事情非常复杂,那么将面临编写大量的ASM代码,虽然我们可以用VC之类的工 ...

  5. OpenCV 学习笔记03 threshold函数

    opencv-python   4.0.1 简介:该函数是对数组中的每一个元素(each array element)应用固定级别阈值(Applies a fixed-level threshold) ...

  6. day1 Opencv安装 python 2.7 (32位)

    [参考安装步骤] http://opencv-python-tutroals.readthedocs.io/en/latest/index.html http://blog.csdn.net/huru ...

  7. OpenCV 环境搭建( Win7 32位 / VS2010 / OpenCV2.4.8 )

    前言 本文介绍如何搭建 OpenCV 开发环境 配置如下: 操作系统:WIN7 32位 开发平台:VS2010 OpenCV 版本:2.4.8 第一步:安装 OpenCV 2.4.8 1. 登陆 Op ...

  8. win7 32位安装 python 及Numpy、scipy、matplotlib函数包

    操作系统: win7 64位,但选择安装32位的python. 1,python下载安装 https://www.python.org/downloads/ 下载2.7版,一路下一步安装. 并在pat ...

  9. 编写生成32位大写和小写字符的md5的函数

    package nicetime.com.practise; import java.security.MessageDigest; /** * MD5加密是JAVA应用中常见的算法,请写出两个MD5 ...

随机推荐

  1. 不停机不更新代码线上调试BUG的工具

    如果你有以下痛点,请你查看本文章: 1.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 2.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 3.线上遇到某个用户的 ...

  2. 微信小程序获取请求数据

    <%@ WebHandler Language="C#" Class="CodeTest" %> using System; using Syste ...

  3. c#练习习题:while循环

    2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人? int count = 80000; int year = 2006; while (count ...

  4. W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

    在执行sudo update-initramfs -u过程中 出现这个错误意思就是说少了固件,只要去下载放到/lib/firmware/i915文件夹下就好了. 下载链接如下: https://git ...

  5. leetcode21 surrounded regions

    题目描述 现在有一个仅包含'X'和'O'的二维板,请捕获所有的被'X'包围的区域 捕获一个被包围区域的方法是将被包围区域中的所有'O'变成'X' 例如 X X X X↵X O O X↵X X O X↵ ...

  6. 【python】将变量保存在本地及读取

    在用jupyter notebook写python代码的过程中会产生很多变量,而关闭后或者restart jupyter kernel后所有变量均会消失,想要查看变量就必须将代码重新再运行一遍,而想在 ...

  7. Spider_实践_beautifulsoup静态网页爬取所有网页链接

    # 获取百度网站首页上的所有a标签里的 href属性值: # import requests # from bs4 import BeautifulSoup # # html = requests.g ...

  8. 经典c程序100例==71--80

    [程序71] 题目:编写input()和output()函数输入,输出5个学生的数据记录. 1.程序分析: 2.程序源代码: #define N 5 struct student { char num ...

  9. TCP中RTT的测量和RTO的计算

    https://blog.csdn.net/zhangskd/article/details/7196707 tcp传输往返时间是指:发送方发送tcp断开时, 到发送方接收到改段立即响应的所耗费的时间 ...

  10. tcp 接收被动关闭 fin

    void tcp_rcv_established(struct sock *sk, struct sk_buff *skb, const struct tcphdr *th, unsigned int ...