文章目录

  • 1.读取图片
  • 2.图片写入
    • 2.1图像质量
  • 3.像素
    • 3.1像素读取与写入

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)

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

原图像如下:

图片大小为400kb

压缩之后的图片为:

图片大小为40kb, 同时出现了严重的马赛克现象

import cv2
img = cv2.imread("img.jpg", 1)
cv2.imwrite('imgTest2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])
True

压缩之后的图片为:

图片大小为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

压缩之后的图像为:

图片大小为: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 129True

OpenCV:读取与写入图片相关推荐

  1. 用opencv读取多个图片并合成mp4视频

    运用C++结合opencv读取多个图片并合成MP4视频 简单描述一下我的demo,我是只有六张图,所以只是为了写的demo而已,写了两个循环,合成一个三千帧的视频,帧率是15 以下是我的代码 #inc ...

  2. 利用OpenCV读取和写入视频

    简 介: 本文介绍了如何对三种不同的视频源(视频文件, 序列图片以及网络摄像头)来进行读取显示视频,使用视频捕获对象. 也给出了如何通过视频捕获对象获取视频流的重要元数据. 介绍了使用视频写入对象把视 ...

  3. 【jpg和png区别】PIL和opencv读取、显示图片+归一化+transpose变换通道

    文章目录 1 图片说明 2 两种读取方式+显示 3 numpy中transpose的使用 4 数据类型转换+归一化 5 PIL.Image读取png和jpg有什么区别 1 图片说明 两张图片格式不同, ...

  4. opencv读取中文路径图片

    opencv c++是支持中文的, opencv python不支持的情况: 1.路径中含有中文. 2.路径中含有特殊字符,比如π 读取图片 img = cv2.imdecode(np.fromfil ...

  5. 基于python3.6的OpenCV读取并打印图片数据

    ** 在python中能够较为容易的显示出图片的宽.高.通道数.像素等. ** 具体代码如下: import cv2 as cvdef get_image_info(image):print(type ...

  6. С++ opencv读取视频提取图片并保存

    读取本地视频,获取前50帧的图像并保存图片 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hp ...

  7. python3使用opencv读取raw格式图片并保存为bmp格式图片

    import numpy as np import cv2rawImg = np.fromfile('./test.raw', dtype=np.uint8)rawImg = rawImg.resha ...

  8. opencv之中英文路径图片读取与保存

    opencv之中英文路径图片读取与保存 关于如何用opecncv读取和写入图片网上已经有很多教程,这里只是记录一下,用的时候方便查找. 1.opencv读写英文路径图片 使用函数imread()和im ...

  9. python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...

最新文章

  1. Git 取消上一次commit操作,但保留add操作
  2. OracleHelper类
  3. faster rcnn接口_TF-Faster-rcnn宠物狗种类识别之对接自己的数据
  4. 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( Not enough information to infer type variable T )
  5. MIT自然语言处理第二讲:单词计数(第三、四部分)
  6. MVC6 (ASP.NET5) 自定义TagHelper
  7. 深入理解h2和r2dbc-h2
  8. CM: UPDATE_PAYLOAD_FROM_ADDINSCH
  9. Redis-集合(Set)基础
  10. 使用FlashFXP V3.8烈火汉化绿色版软件连接Linux
  11. 【Flink】Flink 实现 AT_LEAST_ONCE EXACTLY_ONCE 案例
  12. Linux内核分析-week 1
  13. 如何架设Linux打印服务器
  14. func_ext.php,fsockopen和pfsockopen函数替换
  15. 力扣(LeetCode)56
  16. Mac如何用鼠标快速锁屏
  17. lzg_ad:XPE常见问题FAQ
  18. Mongodb模式设计
  19. 手机android系统问题怎么解决方案,4解决Android系统崩溃问题的解决方案
  20. 基于OpenWrt的Wol(wake on lan)远程唤醒

热门文章

  1. 【Android】spannableStringBuilder
  2. hdu 1507(最大匹配)
  3. MS-SQL中创建索引
  4. java 字符串转日历_将字符串转换为Java中的日历对象
  5. AbstractQueuedSynchronizer源码
  6. 在eclipse4.5.1官方英文版利用官方语言包汉化的方法
  7. python 绘制柱状图
  8. 第25月第3天 Mxshop项目记录01
  9. 纯CSS3实现打火机火焰动画
  10. mysqld --debug-sync