opencv二值化详解

这篇具有很好参考价值的文章主要介绍了opencv二值化详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

opencv二值化处理,opencv,计算机视觉,图像处理

 

大家好,今天来跟大家讲讲 opencv二值化。 先从一个比较经典的方法开始讲解,看 opencv官方文档: 二值化(binary)的定义:在一个输入图像中,将其一个像素点设置为0,将其两个像素点设置为1。 二值化可以使图像中的每个像素值都被指定为0或1。在二值化之前,每个像素都是灰度的。 二值化是图像处理中最常用的方法之一,它的目的是将一个像素点从灰度图像转变成彩色图像。可以说二值化是一种常用的图像处理技术。 我们先来看下 opencv官方文档的方法: 从上面这段话,我们可以看到,对于一幅图片来说,二值化后需要先对图片进行归一化,然后再转换成彩色图像。 在 opencv官方文档中,把二值化分为三个步骤: 1、归一化图像; 2、转换为彩色图像; 我们先来看下二值化的定义:

  • 1、归一化图像

    归一化图像主要是为了解决在二值化过程中,因为光照变化或者像素颜色不一致而产生的影响,从而使得图像的像素点的灰度大小一致,以方便后期二值化操作。 在 opencv官方文档中,对于一个物体来说,其像素点可以按照以下方式来设置: 这种设置方式就是我们平时说的归一化图像,那么这里有个问题,就是如果物体中包含了多个像素点怎么办?为了解决这个问题,在 opencv官方文档中给出了一个简单的处理方法: 通过这个方法,我们可以对物体进行归一化。这个方法的思路非常简单,就是将物体中所有的像素点进行统一处理。 这种归一化方式对于物体中包含多个像素点来说是非常好的,因为在二值化过程中,需要对图像进行运算,如果每个像素点的颜色不一样,就会导致运算结果不一致。当然了,这个方法是有限制条件的: 1、物体中包含的像素点必须是灰度大小一致; 2、图像必须是一个黑色像素点和一个白色像素点组成;

  • 2、转换为彩色图像

    前面的归一化图像,相当于把原图的灰度信息去掉了,为后面的颜色信息做准备。那么这里就需要对原图进行一些处理,比如加个色标之类的。这样做主要是为了避免二值化过程中,因为像素点颜色不同而造成的误差,所以这步很关键。 在 opencv中有一个opencv_color方法,使用它可以将输入图片转换成彩色图像。opencv_color方法会对图片进行一些处理,比如设置一个阈值,这个阈值就是图像中的灰度值与要转换成彩色图像的灰度之间的差。如果阈值不是零,那么该像素将被转换为颜色。 下面就来看看这个方法如何处理图片: 1、首先我们将图片保存下来。为了方便后面使用,我们在保存之前先进行一次缩放处理。因为图片是 jpg格式,所以我们首先要打开它。 2、然后打开一个新文件,先保存到其他位置: 3、最后我们打开转换好的 color文件,看看效果如何: 4、然后我们就可以在 opencv中调用这个方法来实现图片的二值化了。 下面看一个简单的例子: 上面是一个比较经典的二值化演示代码: 这个例子其实是有一个特殊点的:由于图像是黑白图像,所以我们只需要先把颜色降成黑白就可以了。但是对于很多情况下,我们需要把一幅图像转换成彩色图像。例如在人脸识别中,我们可能需要把人脸转化成彩色图像(因为人脸是彩色的);在视频监控中我们可能需要把视频转换成彩色图像(因为视频是黑白的);所以大家可以看到这个方法的处理过程还是比较复杂的。

  • 3、把归一化图像转换成彩色图像

    对图像进行归一化是为了消除噪声,使图像更清晰。归一化后,我们就可以开始把图片转换成彩色图像了。 关于二值化, opencv官方文档给出了两种方法: (1)、基于灰度的方法: 这种方法是用像素值的范围来判断一个像素是否属于一个颜色通道,从而把像素值从灰度图像转换成彩色图像。在这种方法中,我们会得到两个分别用0和1表示的值:0代表是黑色,1代表是白色。颜色通道的选择会根据图像中每个像素的灰度值来决定,因此也被称为灰度图。 这种方法将图像分成了三个颜色空间,分别为 RGB (红、绿、蓝)、 HSV (红和 YCbCr (红、蓝)。这种方法实际上是把图像中每个像素点的值都看作是三个颜色空间中的一个,所以也被称为彩色图。 对于灰度图来说,它不能反映出图像的真实颜色,而将灰度图转换为彩色图是为了利用图像中每个像素点的颜色信息来处理图像。 一般情况下,在进行图像处理时会对灰度和彩色图像分别进行处理。 从上面两种方法可以看出,通过转换之后,两种方法得到的结果都是彩色图。

  • 4、把归一化后的彩色图像转换成二值图像

    上面是一个很经典的方法,下面我们来看下具体步骤: 1、选择图像区域:要处理的图像,即需要二值化的区域,选择一个最大值或者最小值; 2、对图像进行归一化:首先要对图像进行归一化,从上面的图片可以看到,归一化后的图片就变成了彩色图像了,所以我们需要先将原图进行归一化处理; 3、将归一化后的图片转换为二值图像:这个步骤很重要,因为 opencv只支持2*2、4*4等比较大的二值化区域,所以我们需要将归一化后的图片转换为二值图像; 4、用彩色图像处理二值化:大家应该都知道,彩色图像的像素点是由红绿蓝三个颜色构成,而我们在处理二值化时,将像素点转换为 RGB值(红绿蓝三个颜色),这样就完成了对图片的二值化,下面是具体步骤: 5、用 RGB图像处理二值化:前面几个步骤已经完成了对图片进行了归一化处理,所以我们现在需要把图片转换为 RGB值(红绿蓝三个颜色),再用同样的方法对 RGB图像进行二值化处理; 7、最后对图片进行裁剪:把图片中不需要的部分裁剪掉;

  • 5、将二值图像转换为像素点的灰度值

    如果将二值图像转换为像素点的灰度值,那么这个过程就叫做转换。转换的过程与归一化过程相反,是先将图像转换为灰度值,然后再将其转换为像素点的灰度值。 通过上面这段代码,我们可以看到,要把图片转换为像素点的灰度值,首先是要把图片转换成 RGB颜色空间,然后再用 opencv进行处理,这里就需要调用 opencv库的 image.plot_binary ()函数了。 这段代码中我们使用了一个新的方法来进行灰度值的计算: 在这里我们要用到 opencv中的 image.plot_binary ()函数,这个函数的作用是计算像素点灰度值。

以下是几个常用的OpenCV二值化代码示例:

1. 全局阈值二值化:
```python
import cv2
img = cv2.imread('image.jpg', 0)
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('image', img)
cv2.imshow('threshold', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2. 自适应阈值二值化:
```python
import cv2
img = cv2.imread('image.jpg', 0)
thresh = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow('image', img)
cv2.imshow('adaptive threshold', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
3. Otsu二值化:
```python
import cv2
img = cv2.imread('image.jpg', 0)
_, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow('image', img)
cv2.imshow('Otsu threshold', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这些示例代码可以根据需要进行修改和调整,以适应不同的图像处理任务。文章来源地址https://www.toymoban.com/news/detail-727049.html

到了这里,关于opencv二值化详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入探究计算机视觉库OpenCV:开源视觉算法与应用详解

    计算机视觉作为人工智能领域的重要分支,为我们提供了丰富的工具和技术,帮助我们处理图像和视频数据。而OpenCV(Open Source Computer Vision Library)作为最受欢迎的开源计算机视觉库之一,为开发人员提供了丰富的功能和工具,用于处理图像和视频数据。本文将深入探讨Open

    2024年03月13日
    浏览(57)
  • 开源计算机视觉库OpenCV详解,明明白白

    目录 一、简介 二、主要特点 1. 多语言支持 2. 跨平台 3. 丰富的图像处理功能 4. 计算机视觉算法库 三、使用OpenCV的基本步骤 1. 安装OpenCV 2. 导入OpenCV库 3. 读取和显示图像 4. 图像处理操作

    2024年02月20日
    浏览(41)
  • 计算机视觉 | 基于二值图像数字矩阵的距离变换算法

    Hi,大家好,我是半亩花海。 本实验基于 OpenCV 实现了二值图像数字矩阵的距离变换算法。首先生成一个 480x480 的黑色背景图像(定义黑色为0,白色为1),在其中随机选择了三个白色像素点作为距离变换的原点,利用 OpenCV 中 distanceTransform 等相关函数计算并输出这些原点到其

    2024年04月11日
    浏览(45)
  • OpenCV处理图像和计算机视觉任务时常见的算法和功能

    当涉及到OpenCV处理图像和计算机视觉任务时,有许多常见的具体算法和功能。以下是一些更具体的细分: 图像处理算法: 图像去噪 :包括均值去噪、高斯去噪、中值滤波等,用于减少图像中的噪声。 直方图均衡化 :用于增强图像的对比度,特别适用于低对比度图像。 边缘

    2024年02月11日
    浏览(43)
  • 基于 OpenCV 的车辆变道检测,计算机视觉+图像处理技术

    本期教程我们将和小伙伴们一起研究如何使用计算机视觉和图像处理技术来检测汽车在行驶中时汽车是否在改变车道!大家一定听说过使用 OpenCV 的 haar 级联文件可以检测到面部、眼睛等,但是如果目标是汽车,公共汽车呢? 01. 数据集 我们将道路上汽车的视频文件用作数据

    2024年01月25日
    浏览(71)
  • opencv二值化详解

      大家好,今天来跟大家讲讲 opencv二值化。 先从一个比较经典的方法开始讲解,看 opencv官方文档: 二值化(binary)的定义:在一个输入图像中,将其一个像素点设置为0,将其两个像素点设置为1。 二值化可以使图像中的每个像素值都被指定为0或1。在二值化之前,每个像素都

    2024年02月07日
    浏览(36)
  • OpenCV图像处理----图像的二值化

    图像二值化( Image Binarization) 就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 二值化的原理 OpenCV提供的图像二值化API threshold()方法参数: 图片矩阵 阈值 图片中的最大值 二值化的方式 二值化的方式: THRESH_BINARY 高于阈值改为

    2024年02月12日
    浏览(42)
  • OpenCV常用功能——灰度处理和图像二值化处理

    1.1 cvtColor函数 函数原型: 功能 :转换图像颜色空间。 参数 : src: 输入图像。 code: 颜色空间转换代码。可以取常量cv2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY。 dst: 输出图像。 dstCn: 输出图像的通道数,如果设置为0,则跟随转换代码自动设置。 内置函数示例代码: 灰度处理的原理是将

    2024年02月08日
    浏览(62)
  • 基于opencv的c++图像处理(图像二值化)

    基于opencv的c++接口,实现常用的图像二值化方法,包括了最大类间方差法(OTSU)、固定化阈值以及自适应阈值。 该函数将固定级别的阈值应用于多通道阵列。该函数通常用于从灰度图像中获取双层(二进制)图像(#compare 也可用于此目的)或用于去除噪声,即过滤掉值过小

    2024年02月07日
    浏览(51)
  • C#使用OpenCv(OpenCVSharp)图像全局二值化处理实例

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行全局二值化处理。 目录 图像二值化原理 函数原型 参数说明 实例 效果

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包