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删除windows垃圾文件的方法
Jul 14 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python虚拟环境完美部署教程
Aug 06 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
python实现KNN分类算法
Oct 16 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 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+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
tangram框架响应式加载图片方法
2013/11/21 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
js选项卡的制作方法
2017/01/23 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
JS实现滑动插件
2020/01/15 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
python先序遍历二叉树问题
2017/11/10 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
python批量修改文件编码格式的方法
2018/05/31 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python中关于浮点数的冷知识
2019/09/22 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
毕业生个人求职信范例分享
2013/12/17 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
竞选村长演讲稿
2014/04/28 职场文书
食品安全演讲稿
2014/09/01 职场文书
合作协议书模板2014
2014/09/26 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书