代码中测试了:cv2两种读入灰度的方式,测试效果相同。但是网上挺多人说不要混用,然后推荐第二种方式,这是为啥呢?
实验代码
from PIL import Image
import cv2
def getpixel_cv(image):
"""
:param image: 用cv2读入的数据
:return: 打印像素值并返回
"""
arr = []
dim = image.ndim
height, width = image.shape[:2]
for h in range(height):
for w in range(width):
if dim == 3: # 如果是3维图像,即RGB,则倒一下才是正确的RGB顺序
p = image[h, w]
p = (p[..., ::-1]).tolist()
else:
p = image[h, w]
if p not in arr: # 如果p不存在与arr中,则插入到列表中
arr.append(p)
print(arr)
return arr
if __name__ == '__main__':
# 自己来用PIL做一张灰度图
# -----------用cv2 灰度图读入,方式1---------- #
self_gray_2 = Image.new(mode='L', size=(300, 300), color=100) # 做一个灰度图
self_gray_2.save('self_gray_2.png')
print(self_gray_2.mode)
print('-----------way1 单通道读入-------------')
image_1 = cv2.imread('self_gray_2.png', 0)
getpixel_cv(image_1)
print('\n-----------way2 转为灰度图-------------')
image_2 = cv2.imread('self_gray_2.png')
image_2 = cv2.cvtColor(image_2, cv2.COLOR_BGR2GRAY)
getpixel_cv(image_2)
# 检测两种方式的值是否相同:相同
print((image_1 == image_2).any()) # True
结果
L
-----------way1 单通道读入-------------
[100]
-----------way2 转为灰度图-------------
[100]
True