分别使用Image和cv2读,显示,保存图片

目录

前言

一、使用PIL中的Image

二、使用OpenCV

实验结果总结


前言

有时会用到PIL中的Image和OpenCV中的cv2对图片进行操作


一、使用PIL中的Image

使用PIL中的Image来进行读,显示,保存。使用cv2.cvtColor()颜色空间转换

示例如下:

from PIL import Image
import cv2
import numpy as np

img_path = r"D:\1.PNG"
save_location = r"D:\2.png"
image_one = Image.open(img_path)
image_one.show()
# 宽,高,格式:image_one.width, image_one.height, image_one.format
width, height = image_one.size # 返回(width, height)
image_one.save(save_location)
# np.asarray(image) PIL image转换为array
image_rgb2bgr = cv2.cvtColor(np.asarray(image_one), cv2.COLOR_RGB2BGR)
cv2.imshow("image_rgb2bgr", image_rgb2bgr)
cv2.waitKey(0)

二、使用OpenCV

示例如下:

import cv2

img_path = r"D:\1.PNG"
save_location = r"D:\2.png"
img = cv2.imread(img_path)
cv2.imshow("img", img)
cv2.waitKey(0)
img_rgb2bgr = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imshow("img_rgb2bgr", img_rgb2bgr)
cv2.waitKey(0)
# img.shape返回(height, width, channel) channel=3, 表示彩色图片
height, width = img.shape[0], img.shape[1]
cv2.imwrite(save_location, img)


实验结果总结

1. 显示一张无背景的图片,发现:
使用Image.open(),显示的还是无背景的图片。 PIL中使用RGB模式
使用cv2.imread(), 显示的是自动黑色背景的图片。 OpenCV中使用BGR模式

2. cv2.imread()读出来的格式是BGR, 常见的是RGB, 发现:
示例中,同样是RGB转化为BGR, 显示的颜色不一样
cv2.imread()类型为:numpy.ndarray
cv2.imread()第2个参数值为-1时,加载图像,包括alpha通道

3. cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。
灰度图片并不是指常规意义上的黑白图片,只用看是不是无符号八位整型(unit8),单通道即可判断。

你可能感兴趣的:(Python,python)