点击上方“AI搞事情”关注我们


一、读取图片

opencv中采用imread() 函数读取图像

imread(filename, flags=None)
    filename 图片的路径
    flags 图像读取方式
● cv2.IMREAD_COLOR : 加载彩色图像, 图像的任何透明度都将被忽略(默认)。
● cv2.IMREAD_GRAYSCALE : 以灰度模式加载图像。
● cv2.IMREAD_UNCHANGED : 加载包含Alpha通道的图像。
也可以使用1, 0 or -1代替,源码中,IMREAD_COLOR = 1,IMREAD_GRAYSCALE = 0,IMREAD_UNCHANGED = -1。

NOTE

  1. 图像数据以B,G,R的顺序存储。

  2. 读取的图像像素值范围:【0,255】。

  3. 图片路径错误时,程序不报错,返回值为None,显示操作时会报:error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'。

  4. 图片路径中不能包含中文,否则报同2一样的错误。

代码

import cv2
img = cv2.imread('test.jpg',1)

二、显示图片

使用imshow()函数进行图像显示。
    imshow(winname, mat)
    winname 显示窗口的名字
    mat 要显示的图像数据
这里需要使用一些辅助函数,首先,在显示图像前和显示后,需要创建和销毁窗口,分别使用函数namedWindow()destroyAllWindows()
namedWindow(winname, flags=None)
    winname显示窗口的名字
    flags显示窗口的标志
● cv2.WINDOW_AUTOSIZE : 根据显示图像自动调整窗口,不能手动更改窗口大小(默认) 。
● cv2.WINDOW_NORMAL : 可以调整窗口大小。

destroyAllWindows() 销毁创建的所有窗口。

其次,需要使用一个等待键盘输入的函数waitKey()以保证窗口处于显示状态,否则窗口会一闪而过。
waitKey(delay=None)
    delay以毫秒为单位延迟, 0是指“永远”的特殊值。

NOTE

  1. 显示失败,可通过print(mat)判断显示的图像数据是否为None。

  2. 窗口名winname相同时,窗口只会显示最新新图像。

代码

cv2.namedWindow('image', cv2.WINDOW_NORMAL) # 可省略
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、保存图片

图片保存通过imwrite()函数完成。
imwrite(filename, img, params=None)
    filename 保存的图像名称
    img 保存的图像数据
    params 对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第 三个参数表示的是压缩级别。默认为3。

代码

cv2.imwrite('test.jpg', img)

四、应用

1. 显示保存图片

加载一幅灰度图像,显示它,如果按's'则保存图像并退出,如果按ESC键直接退出。

代码

import cv2img = cv2.imread('landscape.jpg', 0)
cv2.imshow('image', img)
k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exitcv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exitcv2.imwrite('gray.png', img)cv2.destroyAllWindows()

2. 使用Matplotlib

Matplotlib是python的一个绘图库,提供了大量的图形绘制API。下面,通过Matplotlib展示opencv读取的图像、放大图像和保存图像。

代码

import cv2
from matplotlib import pyplot as pltimg = cv2.imread('landscape.jpg', 0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

长按二维码关注我们

有趣的灵魂在等你

【opencv系列02】OpenCV4.X图像读取与显示相关推荐

  1. Python OpenCV学习笔记之:图像读取,显示及保存

    为什么80%的码农都做不了架构师?>>>    #-*- coding: utf-8 -*- # 读取,保存,显示图片 import cv2 as cv# 读取为灰度图片 img = ...

  2. youcans 的 OpenCV 学习课—2.图像读取与显示

    youcans 的 OpenCV 学习课-2.图像读取与显示 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 本节介绍图像的读取.保存和显示.除基本方法和例程外,还给出了从 ...

  3. 图像读取、显示和保存

    使用opencv库进行演示 1. 图像读取 cv2.imread( ) 注:cv2.imread的返回结果是按照bgr顺序排列的 2. 图像显示 cv2.imshow(windowName,img ) ...

  4. C#使用EmguCV库(图像读取、显示、保存)(二)

    使用C#+EmguCV处理图像入门(图像读取_显示_保存)二 上个随笔已经介绍EmguCV的一些常用库和程序安装以及环境变量的配置,这次写的是如何使用这个类库对图像进行操作. EmguCV图像处理系统 ...

  5. Ex1:图像读取和显示以及像素操作

    Ex1:图像读取和显示以及像素操作 github地址:https://github.com/linjiafengyang/ComputerVision 1. 读取1.bmp文件,并用CImg.disp ...

  6. 医学图像处理——数据预处理(.mhd+raw格式图像读取和显示)

    数据预处理(.mhd+raw格式图像读取和显示) 说明: 1.mhd+raw背景 2..mhd说明图像数据的信息 3.Python读取和显示mhd图像数据 3.1python库的安装 3.1代码运行展 ...

  7. fpga图像处理(基于sd卡图像读取和显示)

    [声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 除了cmos摄像头之外,还有一种图像读取和显示的办法,那就是基于sd卡的图像处理方法.相比较需要单 ...

  8. Opencv4.0学习记录(Day1 图像读取与显示)

    课程学习:哔哩哔哩(贾志刚老师) 第一节课 #include <opencv2/opencv.hpp>//opencv的头文件 #include<iostream>using ...

  9. opencv实现多图像读取并显示,sprintf_s函数,static_cast

    基于opencv和C++实现多幅图像的加载,程序中需要将文件统一命名,而且文件名最后一定是数字,还未实现对字符文件名图像的加载. 首先介绍一个函数sprintf_s,sprintf_s是sprintf ...

最新文章

  1. Elastic Job从单点到高可用、同城主备、同城双活
  2. 机器学习——利用K-均值聚类算法对未标注数据分组
  3. Python 中的numpy 库
  4. ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...
  5. 课时57.HTML被废弃的标签(掌握)
  6. C#基础:Lambda表达式
  7. 69讲入门python_Python入门,一定要吃透这69个内置函数
  8. echo 在shell及脚本中显示色彩及闪烁警告效果
  9. H.264 视频编码器的研究与分析
  10. LeetCode Java面试刷题笔记汇总
  11. Dataset:智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略
  12. 网络编程-UDP编程
  13. 卫计委电子病历架构基本概念
  14. pow函数在php,pow函数怎么用
  15. pyecharts查看版本_pyecharts 安装及使用指南
  16. mysql级联更新_Mysql实现级联操作(级联更新、级联删除)(转)
  17. 芜湖市计算机语言,2012年芜湖市小学计算机水平等级测评试卷(logo语言版)
  18. CSS 滚动快照 Scroll Snap
  19. pytorch 移植到Android平台(一)
  20. 数据中台(七) 数据中台架构

热门文章

  1. linux kvm usb设备,KVM usb passthrough配置
  2. SVN主干与分支的合并
  3. GDI编程注意点-1
  4. 无人机是计算机什么方面的应用,无人机测绘可以应用到哪些方面呢?
  5. MATLAB实现FFT
  6. Window下yolov3的配置教程
  7. C指针原理(34)-Ncurses-文本终端的图形
  8. 【数据竞赛】2020 Kaggle 10大竞赛方案汇总
  9. 【NLP】图解 Attention完整版
  10. 【学术相关】数学公式如何用Markdown优雅地写出来