Opencv二值化的详细介绍

一、 Opencv二值化函数

Opencv二值化是图像处理中的重要方法之一。它将一副灰度图像转换为二值图像,使每个像素只有两个可能的值:0(黑色)和255(白色)。Opencv函数cv::threshold()是实现二值化的关键函数。

    cv.threshold(src, dst, thresh, maxval, type)

参数说明:src为原始图像,dst为输出图像,thresh是阈值,maxval是输出图像中的最大值,type是二值化的类型。

二、 Opencv二值化尖锐

在进行二值化时,有些情况下需要尽量减小图像的噪点并保留边缘信息。这种情况下可以使用Otsu二值化方法或者自适应阈值方法如cv::adaptiveThreshold()。

其中,Otsu二值化方法在原始图像中找到一个阈值,使得各类之间的方差最大。它不仅可以通过cv::threshold()函数实现,还可以通过cv::threshold()函数的cv::THRESH_OTSU选项实现。

而自适应阈值是基于图像局部区域的灰度值计算阈值。它可以适应不同光照条件下的图像。其函数定义如下:

    cv.adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C)

三、 Opencv二值化边缘图形

在边缘检测时,可以先对图像进行二值化处理,以使边缘更加明显。其中最常用的二值化方法为自动阈值二值化,比如Otsu二值化方法。如果要查找对象的轮廓,可以使用cv::findContours()函数。

    cv.findContours(binary_image, contours, hierarchy, mode, method, offset)

参数说明:binary_image是二值图像,contours是向量列表(每个元素存储一个包含对象边界点的向量),hierarchy是可选输出向量,mode是查找轮廓的模式,method是表示轮廓的近似方法,offset是轮廓坐标的偏移量。

四、 Opencv二值化图像

二值图像在处理数字、字母或其他形状的字符时非常有用。如果目标是从图像中提取这些字符,则需要先将图像转换为二进制图像(也称为二值图像)。可以通过setThreshold()函数手动设置阈值。在使用该函数时,需要先将图像灰度化,然后通过cv::threshold()函数进行二值化处理。

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    ret,thresh_img = cv.threshold(img_gray, 100, 255, cv.THRESH_BINARY) 

五、 Opencv二值化算法

Opencv支持的二值化算法有三种:全局阈值,自适应阈值和Otsu阈值。其中,全局阈值会针对整幅图像计算一个固定阈值,而自适应阈值会基于输入图像的局部区域计算阈值。Otsu阈值会自动选择一合适的阈值,以最合适的方式分离背景和前景。

六、 Opencv二值化代码

下面是一段Opencv二值化的示例代码:

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    ret,thresh_img = cv.threshold(img_gray, 100, 255, cv.THRESH_BINARY) 
    contours, hierarchy = cv.findContours(thresh_img,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

七、 Opencv二值化阈值怎么设置

Opencv中二值化的阈值可以通过直方图和图像的处理结果来调整。通常,可以在试验阶段手动调整阈值值,直到取得最优结果。然而,设置阈值的关键点是要理解二值化背后的原理,明智地选择合适的方法极其重要。常见的选择方法有以下两种:

1)Otsu阈值:根据输入图像自动计算合适的阈值

    ret,thresh_img = cv.threshold(img_gray,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)

2)手动选择:根据实验观察,可以手动选择最佳阈值

    ret,thresh_img = cv.threshold(img_gray, threshold_value, max_value, threshold_type)

八、 Opencv二值化文字提取

二值化在文字图像处理中是重要的一步。文字二值化的目标是将文字上的线条更清楚地分离开来。可以使用Opencv的二值化方法进行文字提取。下面是一个文字提取的示例代码:

    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    blurred_img = cv.GaussianBlur(img_gray, (5,5), 0)
    threshold_image = cv.adaptiveThreshold(blurred_img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,\
                                           cv.THRESH_BINARY,11,2)
    contours, hierarchy = cv.findContours(threshold_image,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE)

文字提取需要进行多次处理,比如先进行图像模糊等预处理操作。最后再进行二值化处理时,可以选择自适应或Otsu等方法。此外,文字提取的关键是检测和捕获文字轮廓。这可以使用findContours()函数实现。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/282780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 08:05
下一篇 2024-12-22 08:05

相关推荐

  • 如何在PyCharm中安装OpenCV?

    本文将从以下几个方面详细介绍如何在PyCharm中安装OpenCV。 一、安装Python 在安装OpenCV之前,请确保已经安装了Python。 如果您还没有安装Python,可…

    编程 2025-04-29
  • Python OpenCV 直线检测

    本文将介绍在Python OpenCV中进行直线检测的方法,主要涉及到图像的边缘检测、霍夫变换和绘制直线等操作。 一、边缘检测 由于直线检测是从图像的边缘开始的,因此必须先找到图像…

    编程 2025-04-29
  • Opencv 实现读取 BMP 图片

    Opencv 是一个基于 C/C++ 语言的开源计算机视觉库,可以用于图像处理、特征识别、目标跟踪、机器学习等领域。在图像处理中,读取 BMP 图片是常见操作之一。 一、打开 BM…

    编程 2025-04-27
  • opencv鼠标绘图

    本文将为您详细介绍如何使用opencv在原始图片上进行鼠标绘图。 一、准备工作 在开始绘制之前,您需要先准备好以下的工作: 1、安装opencv库,可以通过pip install …

    编程 2025-04-27
  • 画er图网站详细介绍

    一、网站介绍 画er图是一个画流程图的在线工具,提供多种流程图、思维导图的绘制模板,方便用户根据自身需求量身定制。该网站提供免费试用,可同时多人在线协作编辑。 画er图通过简单明了…

    编程 2025-04-25
  • 深入探讨OpenCV版本

    OpenCV是一个用于计算机视觉应用程序的开源库。它是由英特尔公司创建的,现已由Willow Garage管理。OpenCV旨在提供一个易于使用的计算机视觉和机器学习基础架构,以实…

    编程 2025-04-25
  • OpenCV的全面介绍

    OpenCV是一款强大的开源计算机视觉库,它包含了各种用于图像和视频处理,图像识别和机器学习的函数,它可以用于开发实时的计算机视觉软件和系统,特别适用于图像处理、物体识别、人脸识别…

    编程 2025-04-25
  • Opencv CUDA编译用法介绍

    本文将从多个方面对Opencv CUDA编译进行详细的阐述和解读。通过以下小标题,我们将详细介绍如何进行编译。 一、环境搭建 在使用CUDA进行加速之前,需要进行CUDA的环境搭建…

    编程 2025-04-25
  • 详解OpenCV高斯滤波

    一、高斯滤波的介绍 OpenCV高斯滤波是一种平滑图像的处理方法,通常用于去除噪声、模糊化图像等。它的原理是利用高斯函数进行加权平均,从而减少噪声的干扰。 在图像处理中,噪声是一种…

    编程 2025-04-25
  • Burp Suite Mac详细介绍

    Burp Suite Mac是一款全称Burp Suite Professional for Mac OS X的Mac版网络攻击测试工具,它能帮助安全测试人员对网络应用进行渗透测试…

    编程 2025-04-25

发表回复

登录后才能评论