赞
踩
图像处理的基本操作包含四个方面的内容:读取图像、显示图像、保存图像和获取图形属性。
其中:常用的图像属性有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(纯白色)的数值进行表示。
代码如下
- import cv2
-
- image = cv2.imread("c.jpg")
- print(image)
此时,这张c.jpg的图片是放在当前工程下面的。
那么,如果需要读取的图片不在当前目录工程下,怎么办?
只需要将代码改为图片当前所在路径即可,如
image = cv2.imread("E:/c.jpg")#假设该图片在E盘根目录下
注意:路径中不能出现中文
通过print打印在出来的是这张图片的部分像素值(这个在后续章节中再讲)
在读取图像章节中,print打印出来的只有当前读取图像的像素值,但是我们希望将这张图片显示出来,可以更加直观地看见它,OpenCV中提供了imshow()方法,waitKey方法destoryAllwindows()方法。
imshow()方法用于显示图像,简单示例如下:
cv2.imshow(winname,mat)
参数说明:
winname:显示图像的窗口名称。
mat:需要显示的图像
waitKey方法用于等待用户按下键盘上按键的时间。当用户按下键盘上的任意按键时,将执行waitKey方法,并且获取waitKey方法的返回值,示例如下:
retval = cv2.waitKey(delay)
参数说明:
revtal:与被按下的按键对应的ASCII码。
delay:等待用户按下键盘上按键的时间。(多用于设置延时等待)
ps:在有些时候,cv2.waitKey方法其实不需要这两个参数。示例在2.1.4中可见这种情况
destroyAllWindows方法用于销毁所有正在显示图像的窗口,示例如下:
cv2.destroyAllWindows()
代码如下:
- import cv2
- image = cv2.imread("c.jpg")
- cv2.imshow("girl",image)
- cv2.waitKey()
- cv2.destroyAllWindows()
本地运行示例如图
注意事项:
1.图像的窗口名称不能使用中文
2.为了能够正常显示图像,要在cv2.imshow()之后紧跟着cv2.waitKey()
OpenCV中提供了用于按照指定路径保存图像的imwrite()方法,代码如下:
cv2.imwrite(filename,img)
参数说明:
filename: 保存图像时所用的完整的路径
img: 你所需要保存的图像
- import cv2
- img = cv2.imread("c.jpg")
- cv2.imwrite("E:/c.jpg",img)
这样我们可以把当前工程目录下面的c.jpg保存到E盘根目录下,在运行完之后即可在E盘根目录下面看见这张图片:
OpenCV提供了shape,size,dtype3个常用属性,具体含义分别如下:
shape:分两种情况:
1.如果是彩色图像,那么获取的是一个包含图像的水平像素(水平方向上的像素)、垂直像素(垂直方向上的像素)和通道数的数组。
2.如果是灰度图像,那么获取的是一个包含图像的水平像素和垂直像素的数组。(没有通道数)
size:获取的是图像包含的像素个数,其值为:水平像素x垂直像素x通道数。灰度图像的通道数为1.
dtype: 获取的是图像的数据类型。
- import cv2
- img_color = cv2.imread("c.jpg")
- print("获取彩色图像的属性:")
- print("shape=",img_color.shape)
- print("size=",img_color.size)
- print("dtype=",img_color.dtype)
-
- print("获取灰度图像的属性:")
- img_gray= cv2.imread("c.jpg",0)
- print("shape=",img_gray.shape)
- print("size=",img_gray.size)
- 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.当声明路径名称时,"/"和"\\"的作用是等价的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。