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使用wxPython打开并播放wav文件的方法
Apr 24 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
Dec 18 Python
tensorflow实现softma识别MNIST
Mar 12 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
Django设置Postgresql的操作
May 14 Python
基于opencv实现简单画板功能
Aug 02 Python
Python实现拼音转换
Jun 07 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 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
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
jquery 常用操作方法
2010/01/28 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python3.3实现乘法表示例
2014/02/07 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
python中的函数用法入门教程
2014/09/02 Python
python实现udp数据报传输的方法
2014/09/26 Python
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
python简单判断序列是否为空的方法
2015/06/30 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
python 画图 图例自由定义方式
2020/04/17 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
大专自我鉴定范文
2013/10/23 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
世界环境日活动总结
2015/02/11 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android