栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python对图像的基础处理(opencv、PIL和numpy)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python对图像的基础处理(opencv、PIL和numpy)

Python对图像的相关处理

opencv、PIL和numpy相关处理
  • Python对图像的相关处理
  • 1. OPENCV的图像处理常规内容
    • 1.1 OpenCV读取图像
    • 1.2 OpenCV转为PIL格式图像
    • 1.3 二进制数据流转为OpenCV格式数据
    • 1.4 保存OpenCV图像
  • 2. PIL的图像处理常规内容
    • 2.1 PIL读取图像
    • 2.2 PIL转为OpenCV格式图像
    • 2.3 二进制数据流转为PIL格式数据
    • 2.4 保存PIL图像
  • 3. numpy的相关内容
    • 3.1 OpenCV与numpy
    • 3.2 numpy数据转为OpenCV格式图像
    • 3.3 PIL与numpy转换

1. OPENCV的图像处理常规内容

使用时导入包: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图像
cv2.imwrite("new_cv.jpg", cv_img) 
2. PIL的图像处理常规内容

使用时导入包: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 保存PIL图像
PIL_Img.save("new_pil.jpg") 
3. numpy的相关内容

使用时导入包: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格式图像
# 图片的分辨率为200*300,这里b, g, r设为随机值,注意dtype属性
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) # PIL图像转为numpy
img = Image.fromarray(img.astype('uint8')).convert('RGB')

注:PIL读取图片的顺序为R、G、B,与OpenCV的顺序不相同。

在工作中常用的相关图像处理的基础内容,做个小笔记!!!
好记性不如烂笔头。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号