首先是安装cv2的包
python中很多包的导包名称和安装包的名称相同,因此安装cv2包时很多人会直接pip install cv2,很显然这是错误的,正确的安装命令:
(base) D:\downloads>pip install opencv-python
Collecting opencv-python
Downloading opencv_python-4.5.3.56-cp37-cp37m-win_amd64.whl (34.9 MB)
|████████████████████████████████| 34.9 MB 17 kB/s
Requirement already satisfied: numpy>=1.14.5 in d:\anaconda3\lib\site-packages (from opencv-python) (1.15.1)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.5.3.56
opencv实现改变图像的通道顺序并保存,步骤如下:
step1:读取图像 ,cv2按照BGR的通道顺序读取的图像
import cv2
img = cv2.imread(img_path) #img_path指的是图片路径
其他读取图像的方法都是按RGB方式读取图像,如Image.open()
step2:改变图像的颜色通道顺序,有三种方法
# 方法一:分离bgr通道,在进行合并
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])
# 方法二
img2 = img[:, :, (2,1, 0)]
# img2 = img[..., :: -1]
# 方法三 cv2.COLOR_BGR2RGB:表示将bgr图像转成rgb
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
step3:保存图像,有两种方法,一种是利用cv2.imwrite(filename,img),另一种是imageio.imwrite(filename, img)
在保存图像的时候出现一个问题,cv2.imwrite(filename,img)只能保存BGR图像,这是源代码里注释的,因此我这里使用的是imageio.imwrite(filename, img)
对于这一点我理解的是:由于cv2读取的是BGR图像,因此保存图像的时候会将BGR图像转换成RGB,即将第一个通道和第三个通道的顺序改变后在保存,这样会保证读取的保存的图像一致,不出错。
下面是一个证明这一点的实验:
import cv2
import imageio
# 由OpenCV读入彩色图像
img = cv2.imread('1.jpeg')
imageio.imwrite('1_1,.jpeg', img)
cv2.imwrite("1_2.jpeg", img)
# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])
imageio.imwrite('1_3,.jpeg', img1)
cv2.imwrite("1_4.jpeg", img1)
结果如下:
1_1.jpeg | 1_2.jpeg |
1_3.jpeg | 1_4.jpeg |
原图是:
注:如果理解错误,请联系我改正
THANKS A LOT!