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

使用时导入包: 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ChatGPT 会开源吗?

    最近,我被一款叫做 ChatGPT 的人工智能(AI)聊天机器人,刷屏了。网上有人说它是搜索引擎杀手,还有人说它将取代程序员… 最后,我还是没扛住铺天盖地的赞美,跑去注…

    Python 2023年10月13日
    042
  • Python的numpy库中求数组中位数和平均值numpy.median()和numpy.mean()

    【小白从小学Python、C、Java】【Python全国计算机等级考试】【Python数据分析考试必会题】 ● 标题与摘要Python的numpy库中求数组中位数和平均值的函数P…

    Python 2023年8月23日
    068
  • Web3中文|NFT如何促进教育的发展?

    自问世以来,NFT已经被应用于教育、艺术等多个领域。不过,相较于艺术行业,大多数人对NFT在教育界的作用知之甚少。 那么,就让我们来看看它们在课堂内外的影响都有哪些。 得益于区块链…

    Python 2023年9月15日
    032
  • SNMP协议介绍

    概述 snmp全称 Simple Network Management Protocol,中文名为 简单网&amp…

    Python 2023年6月3日
    094
  • Python pandas 根据指定条件筛选数据

    目录 * – 1、筛选出”sh”列大于5的数据 – + 法一:直接筛选,适用于一些比较简单直接的筛选,这种方式方便快捷。 + 法二:…

    Python 2023年8月17日
    032
  • 基于Python3-Pygame的乒乓球游戏

    游戏界面截图: ; 按键控制: 空格: 暂停/开始W: 上S: 下 游戏玩法说明: 开始游戏之后,按键盘W/S按键控制球拍上下移动,接住球即可继续游戏,没接住的话游戏结束。结束后按…

    Python 2023年9月20日
    063
  • 用Python绘制数学函数图像

    博客文章: https://blog.manchan.top/post/Drawing-mathematical-function-images-with-Python/可在此处找…

    Python 2023年8月23日
    066
  • 论坛网站全栈项目Vue3+Python+Flask+MySQL+Redis

    校园论坛网站系统。使用技术:python+Flask+Vue3+MySQL+Redis 适用于WEB管理系统,前后端分离开发,Vue项目,全站项目等课题。 联系:v:sql2201…

    Python 2023年8月12日
    038
  • python将字典按行或按列写入csv文件

    很多数据都是字典类型,今天我们就来交大家怎么把字典写入csv文件,以及遇到一些错误应该怎么解决 1.将单个字典写入csv 代码如下(示例): import csv datas = …

    Python 2023年8月16日
    082
  • pandas 数据结构–DataFrame

    DataFrame 是由多种类型的列构成的二维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典。DataFrame 是最常用的 Pandas 对象,…

    Python 2023年8月18日
    060
  • [附源码]计算机毕业设计的手机电商网站Springboot程序

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX (Webstorm也行)+ Eclispe(IntelliJ IDEA,Ecli…

    Python 2023年10月9日
    057
  • 灰色关联分析(一)

    灰色关联分析 -(GRA)算法 1.灰色关联分析属于评价决策类算法范畴 2.灰色关联分析属于多因素统计分析范畴。 3.对研究对象的关系不明确,只能通过表面(部分)信息进行推测,这种…

    Python 2023年8月28日
    044
  • linux为所有用户安装conda

    背景:新建普通用户,用来运行服务,需要有运行软件的权限但搜索没有找到完整的答案,这是stackoverflow上拼接的方案主要参考stackoverflow的这篇过程还是有点长,c…

    Python 2023年9月8日
    049
  • 秩和检验的概念及python实现

    一、非参数统计的概念 参数统计:总体分布 已知型,对总体参数进行估计或检验。如对正态分布,二项分布,泊松分布等, 不可用参数检验的情形: 1.不符合正态分布或者方差齐次性要求 2….

    Python 2023年8月28日
    048
  • 常用归一化/正则化层:InstanceNorm1d、InstanceNorm2d、

    归一化 零、前言 * 1.官网链接 2.归一化公式 3.介绍 一、InstanceNorm1d * 1. 介绍 2.实例 二、InstanceNorm2d * 1. 介绍 2.实例…

    Python 2023年8月2日
    060
  • Python根据csv绘制多折线图(内含批量读取+自定义坐标标签+阴影处理)

    实现功能 1.从csv中读取数据 2.数据清洗(大小超出范围的异常值处理) 3.数据累积处理(将每日数据处理为历史累积值) 4.绘制多折线图 0.导入相关包import os im…

    Python 2023年8月19日
    049
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球