当前位置:   article > 正文

OpenCV图像处理的四种基本操作_opencv 常用图片处理方式

opencv 常用图片处理方式

前言

图像处理的基本操作包含四个方面的内容:读取图像、显示图像、保存图像和获取图形属性。

其中:常用的图像属性有3个:shape , size , dtype。本文将一次讲解实现图像处理的四个操作。

一、读取图像

  如果要对一副图像进行图像处理,那么首先要做的就是先读取这张图像,然后才能进行剩下的操作,在OpenCV中,提供了用于读取图像的imread()方法,其语法如下

image=cv2.imread(filename,flags)

参数说明
#image:imread()方法的返回值,返回的是当前读取到的图像
#filename:要读取的图像的完整文件名称,比如:a.jpg
#flags:读取图像颜色类型的标记,当flag=0时,表示读取的是灰度图像(此时就算给出的图像是彩色图像,也将进行灰度处理把它转换成灰度图像),flag=1是默认值,表示读取的是彩色图像(此时flag参数可以省略。)

  ps:灰度图像是一种每个像素都是从黑到白,被处理为256个灰度级别的单色图像。256个灰度级别分别用0(纯黑色)~255(纯白色)的数值进行表示。

1.1读取图像示例

代码如下

  1. import cv2
  2. image = cv2.imread("c.jpg")
  3. print(image)

此时,这张c.jpg的图片是放在当前工程下面的。

那么,如果需要读取的图片不在当前目录工程下,怎么办?

只需要将代码改为图片当前所在路径即可,如

image = cv2.imread("E:/c.jpg")#假设该图片在E盘根目录下

注意:路径中不能出现中文

通过print打印在出来的是这张图片的部分像素值(这个在后续章节中再讲)

二、显示图像

在读取图像章节中,print打印出来的只有当前读取图像的像素值,但是我们希望将这张图片显示出来,可以更加直观地看见它,OpenCV中提供了imshow()方法,waitKey方法destoryAllwindows()方法。

2.1方法概述

2.1.1imshow方法

imshow()方法用于显示图像,简单示例如下:

cv2.imshow(winname,mat)

参数说明
winname:显示图像的窗口名称。
mat:需要显示的图像

2.1.2 waitKey方法

waitKey方法用于等待用户按下键盘上按键的时间。当用户按下键盘上的任意按键时,将执行waitKey方法,并且获取waitKey方法的返回值,示例如下:

retval = cv2.waitKey(delay)

参数说明

revtal:与被按下的按键对应的ASCII码。

delay:等待用户按下键盘上按键的时间。(多用于设置延时等待)

ps:在有些时候,cv2.waitKey方法其实不需要这两个参数。示例在2.1.4中可见这种情况

2.1.3 destroyAllWindows方法

destroyAllWindows方法用于销毁所有正在显示图像的窗口,示例如下:

cv2.destroyAllWindows()
2.1.4一个简单的图像显示示例

代码如下:

  1. import cv2
  2. image = cv2.imread("c.jpg")
  3. cv2.imshow("girl",image)
  4. cv2.waitKey()
  5. cv2.destroyAllWindows()

本地运行示例如图

注意事项

1.图像的窗口名称不能使用中文

2.为了能够正常显示图像,要在cv2.imshow()之后紧跟着cv2.waitKey()

三、保存图像

3.1方法概述

OpenCV中提供了用于按照指定路径保存图像的imwrite()方法,代码如下:

cv2.imwrite(filename,img)

参数说明

filename: 保存图像时所用的完整的路径

img: 你所需要保存的图像

3.1.1一个简单的保存图像示例
  1. import cv2
  2. img = cv2.imread("c.jpg")
  3. cv2.imwrite("E:/c.jpg",img)

这样我们可以把当前工程目录下面的c.jpg保存到E盘根目录下,在运行完之后即可在E盘根目录下面看见这张图片:

四、获取图像属性

4.1图像属性简介

OpenCV提供了shape,size,dtype3个常用属性,具体含义分别如下:

shape:分两种情况:

1.如果是彩色图像,那么获取的是一个包含图像的水平像素(水平方向上的像素)、垂直像素(垂直方向上的像素)和通道数的数组。

2.如果是灰度图像,那么获取的是一个包含图像的水平像素和垂直像素的数组。(没有通道数)

size:获取的是图像包含的像素个数,其值为:水平像素x垂直像素x通道数。灰度图像的通道数为1.

dtype: 获取的是图像的数据类型。

4.1.1一个简单的获取图像属性的示例
  1. import cv2
  2. img_color = cv2.imread("c.jpg")
  3. print("获取彩色图像的属性:")
  4. print("shape=",img_color.shape)
  5. print("size=",img_color.size)
  6. print("dtype=",img_color.dtype)
  7. print("获取灰度图像的属性:")
  8. img_gray= cv2.imread("c.jpg",0)
  9. print("shape=",img_gray.shape)
  10. print("size=",img_gray.size)
  11. print("dtype=",img_gray.dtype)

本地运行示例

对于此图片的属性获取结果如下

原图:

属性结果:

获取彩色图像的属性:
shape= (500, 500, 3)
size= 750000
dtype= uint8
获取灰度图像的属性:
shape= (500, 500)
size= 250000
dtype= uint8

以上即为OpenCV图像处理的四种基本操作与简单示例。

需要注意三个问题:

1.imread()方法读取的图像既可以是灰度图像也可以是彩色图像

2.为了能够正常显示图像,需要在cv2.imshow()方法后紧跟着cv2.waitKey()方法。

3.当声明路径名称时,"/"和"\\"的作用是等价的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/737128
推荐阅读
相关标签
  

闽ICP备14008679号