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的源码来解析Python下的freeblock
May 11 Python
分享Python文本生成二维码实例
Jan 06 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
详解Python函数作用域的LEGB顺序
May 14 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
python+pyqt5编写md5生成器
Mar 18 Python
python实现超级马里奥
Mar 18 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
python实现图片九宫格分割的示例
Apr 25 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学习之PHP变量
2006/10/09 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
js常见遍历操作小结
2019/06/06 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
python 排序算法总结及实例详解
2016/09/28 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
前处理班长职位说明书
2014/03/01 职场文书
门市房租房协议书
2014/12/04 职场文书
英语读书笔记
2015/07/02 职场文书
思品教学工作总结
2015/08/10 职场文书
《小小的船》教学反思
2016/02/18 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python