pil_image = Image.open('1.png')
opencvImage = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
plt.imshow(pil_image)
COLOR_RGB2BGR
无法正确转换颜色的任何原因?
我试图保留红色,但它将其更改为紫色。
当您使用 PIL 打开图像时,如下所示:
im = Image.open('1.png')
你会得到一个RGB图像。
然后(不必要地)将其转换为 OpenCV 使用的 BGR:
opencvimage = cvtColor()
但你用使用 RGB 的matplotlib
显示它!!
我告诉过你你会让自己感到困惑🤣
如果要使用 PIL 显示 RGB PIL 图像:
pRGB = Image.open('1.png') # PIL RGB
pRGB.show()
如果要使用 matplotlib 显示 RGB PIL 图像:
pRGB = Image.open('1.png') # PIL RGB
nRGB = np.array(pRGB) # Numpy RGB
plt.imshow(nRGB)
如果要使用 matplotlib 显示 OpenCV 图像:
nBGR = cv2.imread('1.png')
plt.imshow(nBGR[:,:,::-1])
这是正常情况。因为如果您的源图像在转换为 BGR 时是 RGB 格式,那么它的通道顺序当然会发生变化。所以这很正常。
例如:
if pixel of source = (12,102,53) = (R,G,B) then this will become
(53,102,12) = (B,G,R)
注意:您可以使用此网站查看像素值。只需更改频道的顺序,您就会明白。
这也是之前讨论过的帖子。