使用OpenCV—Python实现灰度化、二值化等基本处理

前言

对OpenCV、图像处理方法进行简介与操作介绍,实现了对文件夹中每个手写图像进行灰度化、二值化、膨胀和连通组件分析的基本流程并包含了错误处理和文件过滤

配置环境:

OpenCV-Python 3.4.16.59                                                        os

numpy1.24.3 

2.1  依赖库安装方式

OpenCV简介

penCV(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,由Intel公司俄罗斯团队于1999年发起并维护。OpenCV实现了图像处理和计算机视觉方面的许多通用算法,已成为计算机视觉领域最有力的研究工具之一。它提供了C++、Python、Java和MATLAB等语言的接口,并支持Windows、Linux、Android和Mac OS等多种操作系统平台。

OpenCV的主要特点包括:跨平台开源免费、算法丰富、语言接口多样

OpenCV操作简介

以Python为例,可以通过pip命令安装OpenCV。安装命令如下:

pip install opencv-python

基础用法:

#读取图像
import cv2  
img = cv2.imread('image_path.jpg', cv2.IMREAD_COLOR)  # 读取彩色图像

#显示图像
cv2.imshow('Image Window', img)  
cv2.waitKey(0)  # 等待按键  
cv2.destroyAllWindows()  # 关闭所有窗口


#保存图像
cv2.imwrite('save_path.jpg', img)

#图像转换
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # BGR转灰度  
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)    # BGR转RGB

#通道分离与合并
b, g, r = cv2.split(img)  # 分离通道  
img_merge = cv2.merge([b, g, r])  # 合并通道

图像处理基础

灰度化

图像处理的第一步,特别是当处理的是彩色图像时。彩色图像通常由红、绿、蓝(RGB)三个颜色通道组成,每个通道包含8位数据(即0-255的范围),表示颜色的强度。灰度化过程通过某种算法(如加权平均法、最大值法、最小值法等)将这三个颜色通道合并成一个灰度通道,从而得到一个灰度图像。灰度图像仅包含亮度信息,不包含颜色信息,这大大简化了后续处理的复杂性。

二值化

将灰度图像转换成二值图像(黑白图像)的过程。在二值化过程中,选择一个阈值,将灰度图像中的像素点根据这个阈值划分为两类:高于阈值的像素点被设置为白色(或黑色),低于阈值的像素点被设置为黑色(或白色)。二值化简化了图像内容,使得图像中只包含目标和背景两种信息,便于后续处理,如特征提取、边缘检测等。

膨胀

形态学处理中的一种基本操作,用于填充图像中的小洞、扩大物体的大小以及连接相近的物体。膨胀操作通过定义一个结构元素(通常是3x3或5x5的矩阵),然后将这个结构元素在图像上滑动,对于结构元素覆盖的每个像素点,如果结构元素中有任何像素点属于目标区域(通常是白色或高亮区域),则将该像素点标记为目标区域的一部分。膨胀操作可以用于改善图像中物体的连通性,但也可能导致物体边缘的扩展。

剔除最小连通域

一种用于去除图像中噪声或小的无关物体的技术。在二值化/膨胀后的图像中,可能存在一些小的、孤立的连通区域,这些区域可能是由噪声、图像中的微小瑕疵或无关物体引起的。通过计算每个连通区域的大小(通常是包含的像素点数),然后去除那些大小小于某个阈值的连通区域,可以有效地减少噪声和无关物体的干扰,提高图像的质量和后续处理的准确性。

图1  图像处理效果参考
代码分析:

代码运行结果

代码下载链接:

移动云盘链接:https://caiyun.139.com/m/i?145CFKs3FlUAb
提取码:GqiO
 

相关声明:

本文版权归Finxs所有,数据仅供参考。立场观点为个人看法,不代表任何机构。欢迎讨论,但请尊重差异,避免攻击。本文为原创,未抄袭,侵权必究。信息观点仅供参考。

如有任何关于本文的疑问或建议,欢迎在评论区留言。

联系方式:3025096640@qq.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值