我试图打开一个图像并将其变成一个numpy数组。
我试过:1)cv2.imread直接给你一个numpy数组2)和PIL.Image.open然后做一个numpy.asarray来转换图像对象。
然后我意识到从同一张图片得到的数组是不同的,请参阅附加的截图。 cv2.imread PIL.Image.open
我希望颜色通道应始终具有相同的顺序,无论包装,但我似乎无法找到任何枕头重复这个文件。
或者我只是愚蠢?提前感谢任何建议!
我对PIL一无所知,但与世界上其他所有系统相反,OpenCV以BGR顺序存储图像,而不是RGB。这让每个OpenCV初学者都感到惊讶,看起来就像你的例子一样。
OpenCV的
image = cv2.imread(image_path, 1)
image_cv = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
枕头
image = Image.open(image_path).convert("RGB")
image_pillow = numpy.array(image_from_pil)
image_np等于image_cv
注意,在读取JPEG图像时,image_np和image_cv可能差别不大,因为libjpeg verison mat在OpenCV和Pillow中有所不同。