关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)

yizhihongxing

关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数):

简介

图像二值化是一种将灰度图像转换为黑白二值图像的过程,即将像素点的灰度值转换为0或255,使图像中只有黑白两色。这种操作在机器视觉、图像处理中经常用到,如字符识别、边缘检测等。

Python中的OpenCV库提供了cv2.adaptiveThreshold函数用于进行图像二值化。该函数可以在局部区域内自适应地进行二值化操作,因此更适用于处理复杂的图像。

函数参数

cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) -> dst

其中:

  • src: 输入图像,需为灰度图像
  • maxValue: 二值化后的最大值,若当前像素值高于指定的阈值则被赋值为该值
  • adaptiveMethod: 自适应阈值算法,取值为cv2.ADAPTIVE_THRESH_MEAN_C或cv2.ADAPTIVE_THRESH_GAUSSIAN_C
  • thresholdType: 阈值类型,取值为cv2.THRESH_BINARY或cv2.THRESH_BINARY_INV
  • blockSize: 自适应区域大小,必须为奇数且大于1
  • C:从均值中减去的值

示例1

下面是一个简单的示例,展示了如何使用cv2.adaptiveThreshold函数对一张图像进行二值化:

import cv2

img = cv2.imread('original_image.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

thresholded = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize=11, C=2)

cv2.imshow('thresholded', thresholded)
cv2.waitKey()
cv2.destroyAllWindows()

在这个示例中,我们先读入一张彩色图像,将其转换为灰度图像,然后使用cv2.adaptiveThreshold函数对其进行二值化操作。函数中的参数说明如下:

  • maxValue设为255,即二值化后的最大值为255
  • adaptiveMethod取值为cv2.ADAPTIVE_THRESH_MEAN_C,即使用均值对局部区域进行自适应的二值化操作
  • thresholdType取值为cv2.THRESH_BINARY,即二值化操作以像素值>=阈值时反白显示
  • blockSize设为11,表示自适应区域大小为11*11的像素块
  • C设为2,表示从均值中减去2作为阈值

示例2

下面再演示一个在实际应用中常见的场景,即对二维码图片进行二值化:

import cv2

img = cv2.imread('qrcode.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 简单的阈值
_, thresholded_simple = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 自适应阈值
thresholded_adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize=7, C=15)

cv2.imshow('thresholded_simple', thresholded_simple)
cv2.imshow('thresholded_adaptive', thresholded_adaptive)
cv2.waitKey()
cv2.destroyAllWindows()

在这个示例中,我们先读入一张二维码图片,将其转换为灰度图像,然后使用cv2.threshold函数进行简单阈值处理,再使用cv2.adaptiveThreshold函数进行自适应阈值处理。其中,自适应阈值处理中的参数blockSize设为7,表示自适应区域大小为7*7的像素块;参数C设为15,表示从均值中减去15作为阈值。

通过对比以上两种二值化处理结果,可以发现自适应阈值处理能够更好地保留二维码图案的细节特征。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Android 动态加载二维码视图生成快照的示例

    下面就来详细讲解一下“Android 动态加载二维码视图生成快照的示例”的全过程。 一、说明 这个示例的主要思路是动态生成二维码,然后将二维码视图添加到一个布局中,并生成该布局的快照。为了实现这个目的,我们需要使用以下两个库:- zxing:一个二维码生成和解析的库。- Android-Image-Cropper:一个支持图片裁剪的库。 二、步骤 接下来我们…

    人工智能概论 2023年5月25日
    00
  • spring boot微服务自定义starter原理详解

    让我来详细讲解“spring boot微服务自定义starter原理详解”的完整攻略。 什么是Spring Boot Starter? Spring Boot Starter是Spring Boot框架中的一个重要的概念,它是一种经过打包的可复用的组件,可用于扩展Spring Boot应用程序的功能。通常,Starter是一组依赖项,使得在启用该Starte…

    人工智能概览 2023年5月25日
    00
  • 易语言的找字、找图实例

    我很乐意为您讲解易语言的找字、找图实例攻略。 找字与找图是游戏外挂、自动化操作中常用的技术,其原理都是通过对屏幕进行截图,并在截图中寻找某个指定区域的像素点,来实现自动化操作。易语言是一种编程语言,通过编写易语言程序,我们可以实现找字、找图的自动化操作。下面我将为您详细讲解易语言的找字、找图实例的完整攻略。 一、找字实例 找字前的准备工作 在进行找字操作之前…

    人工智能概论 2023年5月25日
    00
  • python3.6的venv模块使用详解

    Python3.6的venv模块使用详解 什么是venv模块 在Python3.3中,引入了一个新的标准库venv,这个标准库封装了创建Python虚拟环境的功能。venv的全称是“Virtual Environments”,即虚拟环境。它是Python解释器的本地副本,用于解决应用程序不同版本之间的包依赖性问题。 在这个虚拟环境中,可以安装自己需要的第三方…

    人工智能概览 2023年5月25日
    00
  • Go-RESTful实现下载功能思路详解

    Go-RESTful实现下载功能思路详解 简介 在Web应用程序中,下载功能通常是必需的功能之一。Go是一种功能强大的编程语言,使用它实现RESTful API来实现下载功能非常高效、方便和可靠。在本文中,我们将深入讨论如何使用Go-RESTful库实现下载功能。 步骤 本文将介绍三个主要步骤来实现下载功能: 定义RESTful路由 打开文件并将其发送到客户…

    人工智能概览 2023年5月25日
    00
  • 详解iOS 计步器的几种实现方式

    详解iOS 计步器的几种实现方式 介绍 iOS 计步器是一种常用的健康应用,可以记录用户的步数、卡路里等健康数据。在 iOS 中,有多种方式可以实现计步器功能,包括使用加速度计、计步器框架和 Core Motion 框架等。本文将详细讲解 iOS 计步器的几种实现方式。 方式一:使用加速度计 iOS 设备上的加速度计可以测量加速度和方位角度,进而可以用来实现…

    人工智能概论 2023年5月25日
    00
  • Linux下给nginx安装waf模块

    安装WAF(Web Application Firewall)模块可以在一定程度上增强Nginx的安全性能,下面是在Linux系统下给Nginx安装WAF模块的完整攻略: 第1步:下载waf模块 首先,我们需要从WAF模块的官方网站下载安装包。 官方网站:https://github.com/nginx-modules/ngx_http_waf_module…

    人工智能概览 2023年5月25日
    00
  • Pytorch中torch.unsqueeze()与torch.squeeze()函数详细解析

    Pytorch 中 torch.unsqueeze() 与 torch.squeeze() 函数详细解析 1. 简介 torch.unsqueeze() 和 torch.squeeze() 是 pytorch 中的两个常用函数,用于调整张量的形状。 torch.unsqueeze(input, dim=None, *, out=None): 在指定维度上增加…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部