学习记录
在用pynq的时候,使用plt.imshow()显示opencv的图片中发现,显示的图片颜色不正常,明明是红色的,显示的颜色确实蓝色,测试硬件也没有发现异常。
经过百度发现,plt和opencv显示图片的格式不一样,opencv的图片显示是bgr格式的,而plt显示图片是rgb格式的。
解决方案
- 显示彩色图片
import numpy as np
import cv2
videoIn = cv2.VideoCapture(0)
# frame_in_w = 640
# frame_in_h = 480
# videoIn.set(cv2.CAP_PROP_FRAME_WIDTH, frame_in_w);
# videoIn.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_in_h);
print("capture device is open: " + str(videoIn.isOpened()))
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
ret, frame_bgr = videoIn.read()
# frame为rgb而plt.imshow()显示的是bgr
frame = frame_bgr[:,:,[2,1,0]]
plt.imshow(frame2, cmap=None)
plt.show()
关键在于frame = frame_bgr[:,:,[2,1,0]]
将bgr转换成rgb
或者frame = frame_bgr[:,:,::-1]
也有同样的效果
2.显示灰度图片
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
ret, frame_bgr = videoIn.read()
# frame为rgb而plt.imshow()显示的是bgr
gray = cv2.cvtColor(frame_bgr, cv2.COLOR_BGR2GRAY)
plt.imshow(gray, cmap='gray')
plt.show()
在显示灰度图片时,不需要进行格式变换,但要注意多加一个参数plt.imshow(gray, cmap='gray')
参考文献
http://www.zzvips.com/article/85490.html
https://www.pianshen.com/article/5326320971/
https://blog.csdn.net/u013608424/article/details/80117178