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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
Python中的jquery PyQuery库使用小结
May 13 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python re.match()用法相关示例
Jan 27 Python
Python绘制数码晶体管日期
Feb 19 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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
phpize的深入理解
2013/06/03 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
Javascript 构造函数详解
2014/10/22 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
angular多语言配置详解
2019/05/16 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python中的for循环
2018/09/28 Python
浅析python参数的知识点
2018/12/10 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python定义一个函数的方法
2020/06/15 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
各营销点岗位职责范本
2014/03/05 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
听课评课活动心得体会
2016/01/15 职场文书