Python-OpenCV读取与保存图片

1. OpenCV读取图片

1.1 简述

  OpenCV读取图片的方法是cv2.imread(),读取出来图片的格式是BGR与常规的彩色图像的格式(RGB)相反,这一点一定要注意。

  OpenCV显示图片的方法是cv2.imshow(),显示的格式是BGR。

  小生就言于此O(∩_∩)O哈哈~,直接上例子。

1.2 例子

1.2.1 Code

 1 import cv2
 2 
 3 
 4 def cv2_imread():
 5     # 图片路径,相对路径
 6     image_path = "./fusion_datasets/1.jpg"
 7     # 读取图片,格式为BGR
 8     image = cv2.imread(image_path)
 9     # 显示图片形状
10     print("image_shape: ", image.shape)
11     # 缩放图片
12     width = int(image.shape[0] / 2)
13     height = int(image.shape[1] / 2)
14     image = cv2.resize(image, (height, width), interpolation=cv2.INTER_CUBIC)
15     # 显示图片
16     cv2.imshow('girl', image)
17     cv2.waitKey(0)
18     cv2.destroyAllWindows()
19 
20 
21 if __name__ == '__main__':
22     cv2_imread()

 

1.2.2 结果显示

 

 

 

2. OpenCV保存图片

2.1 简述

   OpenCV保存图片用cv.imwrite(filename, img),filename为保存的路径名称,img为要保存的图片。

  但实际应用中不会这么简单,(*^▽^*)我掐指一算,绝了O(∩_∩)O哈哈~,路过的宝宝们大多数的是想将tensor(tensor先转为numpy)或numpy转为cv2保存为图片。

  需要注意如下几点:

    1. cv2保存的共三个维度(高,宽,通道)。

    2. 保存的图片格式也是BGR。

    3. 将numpy转为np.uint8格式

2.2 例子

2.2.1 Code

 1 import cv2
 2 import numpy as np
 3 import torchvision.transforms as transforms
 4 
 5 
 6 def cv2_imwrite():
 7     # =============== 模拟图片为tensor数据 ============ #
 8     # 图片路径,相对路径
 9     image_path = "./fusion_datasets/1.jpg"
10     # 读取图片, 图片格式为(height, width, channel)
11     image = cv2.imread(image_path)
12     # 图像转为tensor,此时图片变为(channel, height, width),并将0-255归一化为0-, 减小计算
13     input_transform = transforms.Compose([
14         transforms.ToTensor(),
15     ])
16     # unsqueeze(0):是在扩展维度由三维扩展为4维,(bathch_size, channel, height, width)
17     # 这是实际实验中可能遇到,所以我才扩展维度的,也可以不扩展
18     image = input_transform(image).unsqueeze(0)
19 
20     # =============== 数据准备完成,开始保存 ============ #
21     # 1.首先将tensor降维度,4维降为3维:image.squeeze(0)
22     # 2.tensor转为numpy:image.squeeze(0).numpy()
23     # 3.转换维度,由(channel, height, width)变为(height, width, channel)
24     # 4.数据类型由numpy转换维np.uint8(这是图片应有的格式)
25     # 5.保存图片,执行函数cv2.imwrite(filename, img),filename:保存路径名要, img:保存的图片
26     image = np.transpose(image.squeeze(0).numpy() * 255.0, (1, 2, 0)).astype(np.uint8)
27     cv2.imwrite("./results/" + "girl.jpg", image)
28 
29 
30 if __name__ == '__main__':
31     cv2_imwrite()

 

2.2.2 结果显示

  图片已保存~~

         

    打开图片查看~~,哇哦,so beautiful(*^▽^*)!

   

 

 3. 总结

  努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

 

posted @ 2020-05-07 23:58  抚琴尘世客  阅读(25872)  评论(2编辑  收藏  举报