使用时导入包: import cv2
1.1 OpenCV读取图像
img = cv2.imread("test.jpg")
1.2 OpenCV转为PIL格式图像
PIL_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
1.3 二进制数据流转为OpenCV格式数据
image = file_data.read()
cv_img = cv2.imdecode(np.frombuffer(image, np.uint8), cv2.IMREAD_COLOR)
注:
在这里的file_data是二进制的数据流,读取方式可以是 file_data=open("test.jpg", "rb")
,这种二进制数据流可以通过上述的代码直接转换成OpenCV的数据格式。
1.4 OpenCV图像转为二进制数据流
byte_data = np.array(cv2.imencode('.png', cv_img )[1]).tobytes()
1.5 保存OpenCV图像
cv2.imwrite("new_cv.jpg", cv_img)
1.6 OpenCV查看图像大小
size = cv_img.shape
图像矩阵的shape属性表示图像的大小,shape会返回tuple元组,第一个元素(size [0])表示矩阵行数,第二个元组(size [1])表示矩阵列数,第三个元素(size [2])是3,表示像素值由三原色RGB组成。
使用时导入包: from PIL import Image
2.1 PIL读取图像
image = Image.open("test.jpg")
2.2 PIL转为OpenCV格式图像
cv_img = cv2.cvtColor(np.asarray(image),cv2.COLOR_RGB2BGR)
2.3 二进制数据流转为PIL格式数据
image = file_data.read()
byte_stream = io.BytesIO(image)
PIL_Img = Image.open(byte_stream)
注:
在这里的file_data与上述介绍的OpenCV中处理的二进制数据流一致,不再赘述。
2.4 OpenCV图像转为二进制数据流
from io import BytesIO
img_byte = BytesIO()
PIL_Img.save(img_byte, format='JPEG')
byte_data = img_byte.getvalue()
2.5 保存PIL图像
PIL_Img.save("new_pil.jpg")
2.6 PIL查看图像大小
size = PIL_Img.size
图片尺寸(以像素为单位).
类型: (width, height),图片像素宽和图片像素高。
使用时导入包: import numpy as np
3.1 OpenCV与numpy
import cv2
img = cv2.imread("test.jpg")
print(type(img))
通过打印的结果可以看到,OpenCV读取的图像数据类型为 numpy.ndarray
。
3.2 numpy数据转为OpenCV格式图像
blue = np.random.randint(0, 255, (100, 100), dtype=np.uint8)
green = np.random.randint(0, 255, (100, 100), dtype=np.uint8)
red = np.random.randint(0, 255, (100, 100), dtype=np.uint8)
img = cv2.merge([blue, green, red])
注:
OpenCV读取图片的顺序为B、G、R,因此融合numpy数据成OpenCV格式图像时要注意顺序。
3.3 PIL与numpy转换
image = Image.open("test.jpg")
np_image = np.array(image)
img = Image.fromarray(img.astype('uint8')).convert('RGB')
注:
PIL读取图片的顺序为R、G、B,与OpenCV的顺序不相同。
在工作中常用的相关图像处理的基础内容,做个小笔记!!!
好记性不如烂笔头。
Original: https://blog.csdn.net/xianqin_ma/article/details/121456352
Author: 小钦在奔跑
Title: Python对图像的基础处理(opencv、PIL和numpy)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760986/
转载文章受原作者版权保护。转载请注明原作者出处!