OpenCV读取与写入图片的实现


Posted in Python onOctober 13, 2020

1.读取图片

cv2.imread(filename, flags)
  • -filename: 文件名称
  • -flags: 0 读入灰度图片,1 读入彩色图片
cv2.imshow(winname, mat)
  • -winname: 窗口名字
  • -mat: 要展示的图片矩阵

cv2.waitKey(0):暂停程序,这样才能显示图片

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imshow('img', img)
cv2.waitKey(0)

OpenCV读取与写入图片的实现

2.图片写入

读取图片要经历四个步骤:

1.文件的读取
2.封装格式解析(jpg,png等格式)
3.数据解码
4.数据加载

这样读取的图片为图片的原始数据

cv2.imwrite(filename, img)
  • -filename: 图片名称
  • -img: 图片数据
import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('img1.jpg', img)

True

2.1图像质量

1.jpg图片文件是以图片质量为代价进行压缩的,属于有损压缩

cv2.IMWRITE_JPEG_QUALITY: 表示当前的图片质量,压缩范围为0-100,不同压缩比对应不同的图片大小,下面我们来体验一下:

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 0])

True

原图像如下:

OpenCV读取与写入图片的实现

图片大小为400kb

压缩之后的图片为:

OpenCV读取与写入图片的实现

图片大小为40kb, 同时出现了严重的马赛克现象

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])

True

压缩之后的图片为:

OpenCV读取与写入图片的实现

图片大小为200kb,马赛克现象没那么的严重

2.png图片格式的压缩属于无损压缩,可以设置透明度

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest1.png', img)

True

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest2.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 0])

True

压缩之后的图像为:

OpenCV读取与写入图片的实现

图片大小为:5.92MB

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest3.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 50])

True

图像大小变为2.34MB

由此可知,jpg图片文件图像质量的数值越低,压缩比越高,png图片文件图像质量的数值越低,压缩比越低

3.像素

像素:是指组成图像的小方格

RGB: 每一种颜色都是由RGB(red, green, blue)三种颜色组合而成的

颜色深度:比如,8bit 表示每种颜色的范围是0~255, 所以总共有256^3中颜色

图像宽高:表示在水平方向和竖直方向的像素点的个数

未压缩图片的计算方法: w * h * 颜色通道(3) * 8 bit / 8(B)

3.1像素读取与写入

每一个像素点都有3各部分组成,一般情况下,图片存储的格式为RGB, 但是opecv读取的图片为BGR格式

我们将图片的左上角的一列变为蓝色

import cv2
img = cv2.imread('img.jpg', 1)
(b, g, r) = img[100, 100] # 读取像素值
print(b, g, r)
#10,100 --- 110, 100
for i in range(1, 1000):
  img[10 + i][100] = (255, 0, 0)
cv2.imshow('imageBlue.png', img)
cv2.waitKey(0)

59 54 129

True

OpenCV读取与写入图片的实现

到此这篇关于OpenCV读取与写入图片的实现的文章就介绍到这了,更多相关OpenCV读取与写入图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python计算一个文件里字数的方法
Jun 15 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Python实现购物车程序
Apr 16 Python
关于python写入文件自动换行的问题
Jun 23 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
numpy.random模块用法总结
May 27 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
python使用多线程+socket实现端口扫描
May 28 Python
Python如何用re模块实现简易tokenizer
May 02 Python
Django Form常用功能及代码示例
Oct 13 #Python
Python语言编写智力问答小游戏功能
Oct 13 #Python
Django Auth用户认证组件实现代码
Oct 13 #Python
通过代码实例了解Python3编程技巧
Oct 13 #Python
Python SQLAlchemy库的使用方法
Oct 13 #Python
Pycharm github配置实现过程图解
Oct 13 #Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 #Python
You might like
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
Date对象格式化函数代码
2010/07/17 Javascript
javascript event 事件解析
2011/01/31 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python使用fork实现守护进程的方法
2017/11/16 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
详解Python字典的操作
2019/03/04 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python实现结构体代码实例
2020/02/10 Python
利用python爬取有道词典的方法
2020/12/08 Python
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
什么是GWT的Module
2013/01/20 面试题
好家长事迹材料
2014/01/23 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
初三化学教学反思
2016/02/22 职场文书