matplotlib和opencv


Python中彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB 模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。

opencv:

import cv2 import matplotlib.pyplot as plt
import numpy as np img1
= cv2.imread('1.jpg') # img1为BGR cv2.imshow('image', img1) # 图1


img2 = plt.imread('1.jpg') # img2为RGB
plt.imshow(img2) # 图2

img_new = np.zeros(img1.shape)
img_new[:,:,0] = img1[:,:,2]
img_new[:,:,1] = img1[:,:,1]
img_new[:,:,2] = img1[:,:,0] # 将img1转为RGB模式img_new
img_new = img_new.astype(np.uint8) # 将默认的flost64改为uint8
plt.imshow(img_new) # 此时img_new和img2一样,和图2结果一样

plt.imshow(img1) # 利用plt显示opencv读取的图片,则不会正确显示。如图3

                                    图1                                                                                  图2                                                                                      图3

 

  img = cv2.imread('1.jpg') img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #利用opencv将BGR图转为灰度图
cv2.imshow('Gray_image', img_gray) #图1

plt.imshow(img_gray) #图2,直接查看失败
plt.imshow(img_gray,cmap='gray') # 图3,加入参数查看灰度成功

 

import cv2 import numpy as np img1 = cv2.imread('1.jpg', 0) #以灰度模式读入
img1 = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)  #同上,这应该与上文先读入后转灰度是一致的

img1 = cv2.imread('1.jpg', 1) #以彩图模式读入
img1 = cv2.imread('1.jpg', cv2.IMREAD_COLO) # 同上,读入一副彩色图像。图像的透明度会被忽略,这是默认参数。 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM