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 help()函数用法详解
Mar 11 Python
python超简单解决约瑟夫环问题
May 12 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
Python中安装easy_install的方法
Nov 18 Python
代码详解django中数据库设置
Jan 28 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 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
PHPExcel简单读取excel文件示例
2016/05/26 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
vue项目实战总结篇
2018/02/11 Javascript
Js面试算法详解
2018/04/08 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python+opencv实现阈值分割
2018/12/26 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
浅析python连接数据库的重要事项
2021/02/22 Python
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
一道Delphi面试题
2016/10/28 面试题
亲属关系公证书
2014/04/08 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
2015年度党员个人总结
2015/02/14 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
李强优秀员工观后感
2015/06/16 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
深入理解Pytorch微调torchvision模型
2021/11/11 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js