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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
简单介绍Python中的decode()方法的使用
May 18 Python
Python实现处理管道的方法
Jun 04 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
python如何对实例属性进行类型检查
Mar 20 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
详解python 中in 的 用法
Dec 12 Python
为什么是 Python -m
Jun 19 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
Python使用pyecharts控件绘制图表
Jun 05 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 单引号与双引号的区别
2009/11/24 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
初识javascript 文档碎片
2010/07/13 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
TensorFlow的权值更新方法
2018/06/14 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
职业生涯规划设计步骤
2014/01/12 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
老人节主持词
2015/07/04 职场文书
学校少先队工作总结
2015/08/12 职场文书
素质教育学习心得体会
2016/01/19 职场文书