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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
在Python中调用ggplot的三种方法
Apr 08 Python
python使用win32com库播放mp3文件的方法
May 30 Python
Python缩进和冒号详解
Jun 01 Python
python Pandas 读取txt表格的实例
Apr 29 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Python日志syslog使用原理详解
Feb 18 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
Python中异常处理用法
Nov 27 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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
php adodb连接mssql解决乱码问题
2009/06/12 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
python logging类库使用例子
2014/11/22 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python实现数据库跨服务器迁移
2018/04/12 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python动态文本进度条的实例代码
2020/01/22 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
高三英语教学反思
2014/01/13 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
先进党组织事迹材料
2014/12/26 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书