还有2个尚未提及的选项:
img[..., ::-1] # same as the mentioned img[:, :, ::-1] but slightly shorter
和多功能
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
0
还有2个尚未提及的选项:
img[..., ::-1] # same as the mentioned img[:, :, ::-1] but slightly shorter
和多功能
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
0
OpenCV和Matplotlib中的像素顺序略有不同。
OpenCV遵循BGR顺序,而matplotlib可能遵循RGB顺序。
因此,当您使用pylab函数显示在OpenCV中加载的图像时,可能需要将其转换为RGB模式。 (我不确定是否有任何简单的方法)。下面的方法演示它:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('messi4.jpg')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img) # expects distorted color
plt.subplot(122);plt.imshow(img2) # expect true color
plt.show()
cv2.imshow('bgr image',img) # expects true color
cv2.imshow('rgb image',img2) # expects distorted color
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:请检查以下@Amro的注释,以获得在BGR和RGB之间转换的更好方法。 img2 = img[:,:,::-1]
。很简单。
运行此代码,然后自己查看结果的差异。以下是我得到的:
使用Matplotlib:
使用OpenCV:
0
我有一张图片,我想从中提取一个区域。我有该区域的左上角和右下角的坐标。在灰度下,我这样做:
我不知道该怎么做颜色。我想到提取每个通道R,G,B;从每个通道中切出该区域,然后将它们合并回去,但是必须有一种更短的方法。