opencv的图像读取问题
OpenCV读入的彩色图像是BGR模式,而matplotlib采用RGB模式进行显示,因此需要进行转换。
可以通过通道进行转换,利用
my_image = "my_image.jpg" # change this to the name of your image file
# We preprocess the image to fit your algorithm.
fname = "images/" + my_image
print(fname)
#OpenCV读入的彩色图像是BGR模式,而matplotlib采用RGB模式进行显示,因此需要进行转换。
image = cv.imread(fname)
image = cv.cvtColor(image, cv.COLOR_BGR2RGB) # cv2默认为bgr顺序
h, w, g = image.shape
print(h,w,g)
image = cv.resize(image, (num_px,num_px), interpolation=cv.INTER_CUBIC) #
my_image = image.reshape((1, num_px*num_px*3)).T
#my_image = cv.resize(image, size=(num_px,num_px)).reshape((1, num_px*num_px*3)).T
my_predicted_image = predict(d["w"], d["b"], my_image)
plt.imshow(image)
法二:
img = cv2.imread('b.png')
print(img.shape)
img1 = img.copy() #改变img1的时候不改变img
img1[:,:,0] = img[:,:,2]
img1[:,:,1] = img[:,:,1]
img1[:,:,2] = img[:,:,0] #cv2读取的是bgr,转换成rgb就要做一下变通
plt.imshow(img1)
plt.show()
或
b,g,r=cv2.split(img)
img2=cv2.merge([r.g.b])
还有一个是可以改变通道位置的函数,np.swapaxes(out, 1, 2)
def data_reformat(data):
"""RGB <--> BGR, swap H and W"""
assert data.ndim == 4
out = data[:, :, :, ::-1]
out = np.swapaxes(out, 1, 2)
return out