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的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python插入排序算法实例分析
Jul 03 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python plotly绘制直方图实例详解
Jul 22 Python
浅析Python的命名空间与作用域
Nov 25 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
Python采集壁纸并实现炫轮播
Apr 30 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来自动调用不同服务器上的flash
2006/10/09 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python获取目录下所有文件的方法
2015/06/01 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
2019年.net常见面试问题
2012/02/12 面试题
上海微创软件面试题
2012/06/14 面试题
材料化学应届生求职信
2013/10/09 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
收款委托书范本
2014/09/11 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
夏洛特的网观后感
2015/06/15 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
护士心得体会范文
2016/01/25 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL