浅谈sns网站与流行sns网站对比,导购网站如何做淘宝客,怎样设立网站,苏州营销型网站建设推广『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理 按照颜色对图像进行分类#xff0c;可以分为二值图像、灰度图像和彩色图像。
二值图像#xff1a;只有黑色和白色两种颜色的图像。每个像素点可以用 0/1 表示#xff0c;0…『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理 按照颜色对图像进行分类可以分为二值图像、灰度图像和彩色图像。
二值图像只有黑色和白色两种颜色的图像。每个像素点可以用 0/1 表示0 表示黑色1 表示白色。灰度图像只有灰度的图像。每个像素点用 8bit 数字 [0,255] 表示灰度如0 表示纯黑255 表示纯白。彩色图像彩色图像通常采用红色R、绿色G和蓝色B三个色彩通道的组合表示。
OpenCV 中彩色图像使用 BGR 格式。彩色图像进行灰度化处理可以在读取图像文件时直接读取为灰度图像也可以通过颜色空间转换函数 cv2.cvtColor 将彩色图像转换为灰度图像。
灰度化处理相关函数和例程介绍详见 [OpenCV 学习课-2.图像读取与显示]。
# 1.1 图像的读取imgFile ../images/imgLena.tif # 读取文件的路径img1 cv2.imread(imgFile, flags1) # flags1 读取彩色图像(BGR)img2 cv2.imread(imgFile, flags0) # flags0 读取为灰度图像# 1.10 图像显示(plt.imshow)imgRGB cv2.cvtColor(img1, cv2.COLOR_BGR2RGB) # 图片格式转换BGR(OpenCV) - RGB(PyQt5)imGray cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # 图片格式转换BGR(OpenCV) - Gray 进一步地通过函数 cv2.threshold 可以对图像进行二值化处理。
函数说明
cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst函数 threshold() 可以将灰度图像转换为二值图像图像完全由像素 0 和 255 构成呈现出只有黑白两色的视觉效果。
灰度阈值化通过选取的灰度阈值 thresh将每个像素的灰度值与阈值进行比较将灰度大于阈值的像素点置为最大灰度小于阈值的像素点置为最小灰度得到二值图像可以突出图像轮廓把目标从背景中分割出来。
参数说明
scr变换操作的输入图像nparray 二维数组必须是单通道灰度图像thresh阈值取值范围 0~255maxval填充色取值范围 0255一般取 255type变换类型 cv2.THRESH_BINARY大于阈值时置 255否则置 0cv2.THRESH_BINARY_INV大于阈值时置 0否则置 255cv2.THRESH_TRUNC大于阈值时置为阈值 thresh否则不变保持原色cv2.THRESH_TOZERO大于阈值时不变保持原色否则置 0cv2.THRESH_TOZERO_INV大于阈值时置 0否则不变保持原色cv2.THRESH_OTSU使用 OTSU 算法选择阈值 返回值 retval返回二值化的阈值返回值 dst返回阈值变换的输出图像
注意
函数 cv2.threshold 进行固定阈值的二值化处理函数 cv2.adaptiveThreshold 为自适应阈值的二值化处理函数可以通过比较像素点与周围像素点的关系动态调整阈值。确切地说只有 type 为 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV 时输出为二值图像其它变换类型时进行阈值处理但并不是二值处理。 例程1.47 图像的二值变换固定阈值 # 1.47 固定阈值二值变换img cv2.imread(../images/imgLena.tif) # 读取彩色图像(BGR)imgGray cv2.imread(../images/imgLena.tif, flags0) # flags0 读取为灰度图像# imgGray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 颜色转换BGR(OpenCV) - Gray# cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dstret1, img1 cv2.threshold(imgGray, 63, 255, cv2.THRESH_BINARY) # 转换为二值图像, thresh63ret2, img2 cv2.threshold(imgGray, 127, 255, cv2.THRESH_BINARY) # 转换为二值图像, thresh127ret3, img3 cv2.threshold(imgGray, 191, 255, cv2.THRESH_BINARY) # 转换为二值图像, thresh191ret4, img4 cv2.threshold(imgGray, 127, 255, cv2.THRESH_BINARY_INV) # 逆二值图像BINARY_INVret5, img5 cv2.threshold(imgGray, 127, 255, cv2.THRESH_TRUNC) # TRUNC 阈值处理THRESH_TRUNCret6, img6 cv2.threshold(imgGray, 127, 255, cv2.THRESH_TOZERO) # TOZERO 阈值处理THRESH_TOZEROplt.figure(figsize(9, 6))titleList [1. BINARY(thresh63), 2. BINARY(thresh127), 3. BINARY(thresh191), 4. THRESH_BINARY_INV, 5. THRESH_TRUNC, 6. THRESH_TOZERO]imageList [img1, img2, img3, img4, img5, img6]for i in range(6):plt.subplot(2, 3, i1), plt.title(titleList[i]), plt.axis(off)plt.imshow(imageList[i], gray) # 灰度图像 ndim2plt.show()本节完 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/121451915) Copyright 2022 youcans, XUPT Crated2021-11-18 【第4章灰度变换与直方图】
37. 图像的灰度化处理和二值化处理 38. 图像的反色变换图像反转 39. 图像灰度的线性变换