[ Opencv+Python ] 入门练习--图像转换为灰度、二值化


一、环境配置

  • 安装OpenCV

方法一:使用pip安装

pip install opencv-python

方法二:手动安装

 下载源码:(地址)OpenCV 的官网下载最新的稳定版本:  https://opencv.org/releases/

二、图像转换程序编写

  • 该程序包含两个自定义函数:graybinary
  • grayscale函数将彩色图像转换为灰度图像。
  • binary函数将灰度图像转换为二值化图像。可以通过调整 threshold 参数来控制二值化的阈值。
  • 在程序的最后,使用 cv2.imshow 函数显示原始图像、灰度图像和二值化图像。
import cv2  # 导入 OpenCV 库

# 灰度化函数,输入为彩色图像,输出为灰度图像
def gray(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 使用 cv2.cvtColor 函数将彩色图像转换为灰度图像
    return gray  # 返回灰度图像


# 二值化函数,输入为彩色图像和阈值(设置为 127),输出为二值化图像
def binary(image, threshold=130):
    gray = grayscale(image)  # 将彩色图像转换为灰度图像
    # 使用 cv2.threshold 函数将灰度图像转换为二值化图像,将阈值设为 threshold
    ret, binary = cv2.threshold(gray, threshold, 255, cv2.THRESH_BINARY)
    return binary  # 返回二值化图像


if __name__ == '__main__':
    img_path = 'open2.png'  # 指定要转换的彩色图像的路径
    img = cv2.imread(img_path)  # 使用 cv2.imread 函数读取彩色图像
    grayimg = gray(img)  # 将彩色图像转换为灰度图像
    binary = binary(img)  # 将灰度图像转换为二值化图像
    cv2.imshow('Original Image', img)  # 使用 cv2.imshow 函数显示原始彩色图像
    cv2.imshow('Grayscale Image', grayimg)  # 使用 cv2.imshow 函数显示灰度图像
    cv2.imshow('Binary Image', binary)  # 使用 cv2.imshow 函数显示二值化图像
    cv2.waitKey(0)  # 使用 cv2.waitKey 函数等待用户按下任意键
    cv2.destroyAllWindows()  # 使用 cv2.destroyAllWindows 函数关闭所有窗口

过程报错解读:

cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error:(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

  • 原因如下:通常为图片路径存放错误,且不能有中文路径。
  • 如路径正确,请尝试升级opencv版本。

三、结果展示

  • 原图:
    在这里插入图片描述
  • 二值化:
    在这里插入图片描述
  • 灰度图像:
    在这里插入图片描述

四、补充盲点信息

  1. 什么是阈值
  • 在数字图像处理中,阈值(Threshold)是指将灰度图像的像素值转换为二进制值(0或1)的一种方法。阈值处理通常用于将图像分割为不同的区域,以便对每个区域进行不同的处理或分析。

  • 阈值处理的基本原理是将图像中像素的灰度值与一个预先设定的阈值进行比较,大于或等于阈值的像素被标记为白色(1),小于阈值的像素被标记为黑色(0)。这样就可以将图像分割成黑白两部分,便于进行进一步的处理。

  • 阈值处理在图像分割、边缘检测、二值化等方面有广泛的应用。在实际应用中,选择合适的阈值是十分重要的,过高或过低的阈值都会影响图像的处理效果。常用的阈值处理算法包括全局阈值处理、自适应阈值处理等。


猜你喜欢

转载自blog.csdn.net/IWICIK/article/details/129127056