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 logging类库使用例子
Nov 22 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python多继承顺序实例分析
May 26 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
python简单实现AES加密和解密
Mar 28 Python
python实现的汉诺塔算法示例
Oct 23 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python导入oracle数据的方法
2015/07/10 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
小学生放飞梦想演讲稿
2014/08/26 职场文书
校运动会广播稿300字
2014/10/07 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
红色革命电影观后感
2015/06/18 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技