day2 - 使用OpenCV进行图像的读取与展示

本期将使用OpenCV对图像进行一些基本的了解和操作:主要包含图像的读取、展示和保存,以及查看图像的基本属性,让我们充分的了解图像,为后续图像处理做准备。

完成本期内容,你可以:

  • 会使用OpenCV对图像进行读取、展示、保存等基本操作

  • 学会查看图像的基本属性

若要运行案例代码,你需要有:

  • 操作系统:Ubuntu 16 以上 或者 Windows10

  • 工具软件:VScode 或者其他源码编辑器

  • 硬件环境:无特殊要求

  • 核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16

    # 比如: opencv安装
    pip install opencv-python==3.4.2.16
    # 如果下载速度特别慢可以指定国内镜像
    pip install opencv-python==3.4.2.16 -i https://pypi.douban.com/simple
    

点击下载源码


图像读取

OpenCV中提供的图像读取的函数是 cv2.imread( )。

函数原型: image = cv2.imread(filename, flags)

image 为输出图像。

参数描述如下:

参数描述
filename【必需】要读取的图像的完整文件名。
flags读取图像颜色类型的标记。flags的默认值是1,表示读取的图像是彩色图像,此时的flags可以省略;当flags的值为0时,表示要读取的是灰度图像(如果读取的是彩色图像,也将彩色图像转换为彩色图像对应的灰度图像)

图像展示

OpenCV 中提供的图像展示的函数是 cv2.imshow( )。

函数原型: cv2.imshow(winname, mat)

image 为输出图像。

参数描述如下:

参数描述
winname显示图像的窗口名称
mat要显示的图像

使用 OpenCV 展示图片时,通常需要通过用户键盘输入来关闭窗口,OpenCV 中提供的等待用户按键的函数是cv2.waitKey( )。

函数原型: retval = cv2.waitKey(delay)

retval 为被按下的按键对应的 ASCII 码。

参数描述如下:

参数描述
delay等待用户按下键盘上按键的时间,单位是毫秒(ms)。当delay的值为复数、0或者空时,表示无限等待用户按下键盘上的时间。

OpenCV 中提供的用于销毁正在显示图像的窗口的函数是 cv2.destroyAllWindows( )。

函数原型: cv2.destroyAllWindows( )

图像保存

OpenCV 中提供的图像保存的函数是 cv2.imwrite( )。

函数原型:cv2.imwrite(filename, img);

参数描述如下:

参数描述
filename保存图像时的完整路径
img要保存的图像

4.4 获取图像属性

在处理图像的过程中,经常需要获取大小、类型等图像属性。为此,OpenCV 提供了 shape、size 和 dtype 3个属性,具体含义如下:

  • shape:如果是彩色图像,那么获取的是一个包含图像的垂直像素、水平像素和通道数的数组,即(垂直像素,水平像素,通道数);如果是灰度图像,那么获取的是一个包含图像垂直像素和水平像素的数组,即(垂直像素,水平像素)。
  • size:获取的是图像包含的像素个数,其值为 “ 水平像素 × 垂直像素 × 通道数 水平像素\times 垂直像素 \times 通道数 水平像素×垂直像素×通道数 ”。
  • dtype:获取的是图像的数据类型

具体步骤

1. 创建项目结构

创建项目名为使用OpenCV进行图片的展示与保存,项目根目录下新建code文件夹储存代码,新建dataset文件夹储存数据,项目结构如下:

使用OpenCV进行图片的展示与保存             # 项目名称
├── code                               # 储存代码文件
├── dataset                            # 储存数据文件

注:如项目结构已存在,无需再创建。

2. 使用 OpenCV 读取图片并展示

  1. code文件夹下创建img_show.py文件;
  2. 读取dataset文件夹下的flower.jpg图片,并进行展示,标题为 flower ;
  3. 无限等待用户输入按键,按下按键后销毁所有窗口。

代码实现

# 导入OpenCV
import cv2
# 读取彩色图像
img = cv2.imread('../dataset/flower.jpg')
# 展示图像
cv2.imshow("flower",img)
# 等待用户输入
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()

请添加图片描述

实验效果

3. 使用 OpenCV 读取灰度图片并保存

  1. code文件夹下创建img_save.py文件;
  2. 读取dataset文件夹下的flower.jpg图片,转换为灰度图,并进行展示,标题为flower ;
  3. 将灰度图片以gray_img.jpg 保存至dataset文件夹下;
  4. 无限等待用户输入按键,按下按键后销毁所有窗口。

代码实现

# 导入OpenCV
import cv2
# 读取图像
gray_img = cv2.imread('../dataset/flower.jpg',0)
# 展示图像
cv2.imshow("flower",gray_img)
# 保存图像
cv2.imwrite('../dataset/gary_img.jpg',gray_img)
# 等待用户输入
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()

请添加图片描述

实验效果

4. 打印图像的属性

  1. code文件夹下创建img_attributes.py文件;
  2. 读取dataset文件夹下的flower.jpg图片;
  3. 打印图像的(垂直像素,水平像素,通道数)、像素数 、数据类型。

代码实现

# 导入OpenCV
import cv2
# 读取彩色图像
img = cv2.imread('../dataset/flower.jpg')
# 打印彩色图像的属性
print('---获取图像flower.jpg的属性---')
print('图像的(垂直像素,水平像素,通道数)',img.shape)
print('图像包含的像素数',img.size)
print('图像的数据类型',img.dtype)
# 实验结果
---获取图像flower.jpg的属性---
图像的(垂直像素,水平像素,通道数) (596, 452, 3)
图像包含的像素数 808176
图像的数据类型 uint8

素,水平像素,通道数)',img.shape)
print(‘图像包含的像素数’,img.size)
print(‘图像的数据类型’,img.dtype)


```python 
# 实验结果
---获取图像flower.jpg的属性---
图像的(垂直像素,水平像素,通道数) (596, 452, 3)
图像包含的像素数 808176
图像的数据类型 uint8

通过调用OpenCV接口,可以实现图像的图像的读取、展示和保存,以及查看图像的基本属性,让我们充分的了解图像,为后续图像处理做准备。在使用OpenCV接口的时候,要清楚接口参数的含义和作用,这样才能够操作图像达到我们想要的效果。

点击下载源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值