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 相关文章推荐
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
解决python报错MemoryError的问题
Jun 26 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
Django中使用第三方登录的示例代码
Aug 20 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
pandas分批读取大数据集教程
Jun 06 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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/01/11 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
php判断表是否存在的方法
2015/06/18 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
$()JS小技巧
2007/07/21 Javascript
js DOM的学习笔记
2011/12/22 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python探索之自定义实现线程池
2017/10/27 Python
使用requests库制作Python爬虫
2018/03/25 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
利用python求积分的实例
2019/07/03 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
2016党员入党决心书
2015/09/22 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
创业计划书之美甲店
2019/09/20 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python