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切片知识解析
Mar 06 Python
pygame实现弹力球及其变速效果
Jul 03 Python
python3实现跳一跳点击跳跃
Jan 08 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
python实现图书借阅系统
Feb 20 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python中格式化字符串的四种实现
May 26 Python
Python类class参数self原理解析
Nov 19 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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获取网页内容方法总结
2008/12/04 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
js实时监听文本框状态的方法
2011/04/26 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
js实现点赞效果
2020/03/16 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python模拟Django框架实例
2016/05/17 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
django用户登录和注销的实现方法
2018/07/16 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Pytorch的mean和std调查实例
2020/01/02 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
盛大笔试题
2016/11/05 面试题
委托书怎么写
2014/07/31 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
司机个人年终总结
2015/03/03 职场文书
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL