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之print详解
Sep 28 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
如何将python中的List转化成dictionary
Aug 15 Python
Django实现快速分页的方法实例
Oct 22 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Python全栈之列表数据类型详解
Oct 01 Python
python手写均值滤波
Feb 19 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python中sys模块是做什么用的
Aug 16 Python
Pycharm中如何关掉python console
Oct 27 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获取服务器时间的实现代码
2013/06/07 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
Extjs学习笔记之七 布局
2010/01/08 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
webpack多页面开发实践
2017/12/18 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
简单学习Python time模块
2016/04/29 Python
Python自定义简单图轴简单实例
2018/01/08 Python
python实现词法分析器
2019/01/31 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
中间件分为哪几类
2016/09/18 面试题
幼儿运动会邀请函
2014/01/17 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
音乐专业自荐信
2014/02/07 职场文书
小学一年级学生评语
2014/04/22 职场文书
幼儿生日活动方案
2014/08/27 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫