摘要
PIL.Image.open读入的是RGB顺序,而opencv中cv2.imread读入的是BGR通道顺序 。cv2.imread会显示图片更蓝一些。
cv2.imread(path,读取方式)方法
第一个参数是图片的路径。
第二个参数是读取方式:cv2.IMREAD_COLOR:读入一副彩色图片;cv2.IMREAD_GRAYSCALE:以灰度模式读入图片;cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道。
默认为cv2.IMREAD_COLOR。
返回值是(height,width,channel)数组,channel的顺序是BGR顺序。
例:
import cv2 from PIL import Image imagePath='4.jpg' import matplotlib.pyplot as plt cvImage=cv2.imread(imagePath) print(cvImage.shape) plt.subplot(121) plt.imshow(cvImage) plt.show()
PIL.Image.open(path)方法
参数:图片的路径
返回值: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=374x288 at 0x13EA15F7808>
需要用img=np.array(img)做转换,才能看到shape属性,是(height,width,channel)数组,channel的通道顺序为RGB。
例:
from PIL import Image import numpy as np imagePath='4.jpg' import matplotlib.pyplot as plt ''' cvImage=cv2.imread(imagePath) print(cvImage.shape) plt.subplot(121) plt.imshow(cvImage) plt.show() ''' img=Image.open(imagePath) img=np.array(img) print(img.shape) plt.imshow(img) plt.show()
二者之间的相互转化
主要用到的函数cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。
本例用到的格式是cv2.COLOR_RGB2BGR和cv2.COLOR_BGR2RGB
代码:
def PILImageToCV(imagePath): # PIL Image转换成OpenCV格式 img = Image.open(imagePath) plt.imshow(img) img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) plt.imshow(img) plt.show() def CVImageToPIL(imagePath): # OpenCV图片转换为PIL image img = cv2.imread(imagePath) plt.imshow(img) img2 = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.imshow(img2) plt.show()
判断图像数据是否是OpenCV格式:
isinstance(img, np.ndarray)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。