Python OpenCV中的numpy与图像类型转换操作


Posted in Python onDecember 11, 2020

Python OpenCV存储图像使用的是Numpy存储,所以可以将Numpy当做图像类型操作,操作之前还需进行类型转换,转换到int8类型

import cv2
import numpy as np
# 使用numpy方式创建一个二维数组
img = np.ones((100,100))
# 转换成int8类型
img = np.int8(img)
# 颜色空间转换,单通道转换成多通道, 可选可不选
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
cv2.imwrite("demo.jpg", img)

补充知识:Python中读取图片并转化为numpy.ndarray()数据的6种方式

方式:                                        返回类型

OpenCV                                      np.ndarray
PIL                                               PIL.JpegImagePlugin.JpegImageFile
keras.preprocessing.image         PIL.JpegImagePlugin.JpegImageFile
Skimage.io                                  np.ndarray
matplotlib.pyplot                          np.ndarray
matplotlib.image                          np.ndarray

import numpy as np
import cv2
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
from PIL import Image
import skimage.io as io
import matplotlib.pyplot as plt
import matplotlib.image as mpig 
 
'''
方式:   返回类型
OpenCV   np.ndarray
PIL    PIL.JpegImagePlugin.JpegImageFile
keras.preprocessing.image PIL.JpegImagePlugin.JpegImageFile
Skimage.io   np.ndarray
matplotlib.pyplot  np.ndarray
matplotlib.image  np.ndarray
'''
 
imagePath="E:/DataSet/test1/trainSet/bus/300.jpg" 
 
'''
方式一:使用OpenCV
'''
img1=cv2.imread(imagePath)
print("img1:",img1.shape)
print("img1:",type(img1))
print("-"*10)
 
'''
方式二:使用PIL
'''
img2=Image.open(imagePath)
print("img2:",img2)
print("img2:",type(img2))
#转换成np.ndarray格式
img2=np.array(img2)
print("img2:",img2.shape)
print("img2:",type(img2))
print("-"*10) 
 
'''
方式三:使用keras.preprocessing.image
'''
img3=load_img(imagePath)
print("img3:",img3)
print("img3:",type(img3))
#转换成np.ndarray格式,使用np.array(),或者使用keras里的img_to_array()
#使用np.array()
#img3=np.array(img2)
#使用keras里的img_to_array()
img3=img_to_array(img3)
print("img3:",img3.shape)
print("img3:",type(img3))
print("-"*10) 
 
'''
方式四:使用Skimage.io
'''
img4=io.imread(imagePath)
print("img4:",img4.shape)
print("img4:",type(img4))
print("-"*10) 
 
'''
方式五:使用matplotlib.pyplot
'''
img5=plt.imread(imagePath)
print("img5:",img5.shape)
print("img5:",type(img5))
print("-"*10) 
 
'''
方式六:使用matplotlib.image
'''
img6=mpig.imread(imagePath)
print("img6:",img6.shape)
print("img6:",type(img6))
print("-"*10)

运行结果:

Using TensorFlow backend.
img1: (256, 384, 3)
img1: <class 'numpy.ndarray'>
----------
img2: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x256 at 0x249608A8C50>
img2: <class 'PIL.JpegImagePlugin.JpegImageFile'>
img2: (256, 384, 3)
img2: <class 'numpy.ndarray'>
----------
img3: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x256 at 0x2496B5A23C8>
img3: <class 'PIL.JpegImagePlugin.JpegImageFile'>
img3: (256, 384, 3)
img3: <class 'numpy.ndarray'>
----------
img4: (256, 384, 3)
img4: <class 'numpy.ndarray'>
----------
img5: (256, 384, 3)
img5: <class 'numpy.ndarray'>
----------
img6: (256, 384, 3)
img6: <class 'numpy.ndarray'>
----------

Python OpenCV中的numpy与图像类型转换操作

以上这篇Python OpenCV中的numpy与图像类型转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python cookielib 登录人人网的实现代码
Dec 19 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python模块之paramiko实例代码
Jan 31 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
TensorFlow损失函数专题详解
Apr 26 Python
Python日志模块logging基本用法分析
Aug 23 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
举例讲解Python常用模块
Mar 08 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
python中wheel的用法整理
Jun 15 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
弄清Pytorch显存的分配机制
Dec 10 Python
使用python操作lmdb对数据读取的实例
Dec 11 #Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 #Python
python中append函数用法讲解
Dec 11 #Python
python实现图像随机裁剪的示例代码
Dec 10 #Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 #Python
python 实现的IP 存活扫描脚本
Dec 10 #Python
class类在python中获取金融数据的实例方法
Dec 10 #Python
You might like
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP初学者头疼问题总结
2006/07/08 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
c语言常见笔试题总结
2016/09/05 面试题
党课学习思想汇报
2014/01/02 职场文书
企业领导对照检查材料
2014/08/20 职场文书
正规借条模板
2015/05/26 职场文书
运动会观后感
2015/06/09 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python