这个分类记录自己学习opencv的随笔文档,方便以后查询和复习。python-opencv环境配置网上教程很多,此处就不做赘述了,该文档记录opencv最基础的图像读写和显示,工具是jupyter notebook。
1 opencv中,图像读取函数是 imread(filename, flags=None)
参数说明:
filename:读取图像的路径,通常支持jpg、png、bmp、tiff等格式文件。
flags:图片读入的模式,模式定义在cv::ImreadModels中,默认值为IMREAD_COLOR。还有一个常用的模式是:IMREAD_GRAYSCALE,对应值为 0,以灰度图方式读取图片。
imread函数返回一个BGR形式的图像对象,其类型为一个numpy数组。
2 显示图像的函数是 imshow(window_name, image) 参数说明:window_name是一个字符串,代表要在其中显示图像的窗口的名称。image是它是要显示的图像。
可以用 namedWindow(window_name, flag) 来定义一个窗口,如果没有定义会根据imshow的参数自动生成一个窗口,定义好的窗口可以用 resizeWindow(window_name,width,height) 来改变窗口大小。
import cv2 import numpy as np img=cv2.imread('C:/Users/86188/Desktop/test/python/cat.jpg',cv2.IMREAD_COLOR) #读取图片
cv2.imshow('showimg',img) #显示图片 cv2.waitKey(0) #等待用户操作 cv2.destroyWindow('window') #销毁窗口
3 除了直接用opencv的imshow来显示图片,也可以用matplotlib来显示图片,但是需要在显示的时候进行图片通道翻转(直接用::-1,也可以用cvtColor()函数进行颜色通道翻转),因为正常图片的格式是rgb,但是opencv读取进来的格式是bgr。
用opencv来显示图像通常需要好几行代码,可以自己封装成函数,需要的时候直接调用
4 在 OpenCV 中,图像是一个 NumPy 数组,我们可以使用numpy数组的属性来访问图像属性:
- 图像类型 - 图像的数据结构。OpenCV中的图像是numpy.ndarray,我们可以将其访问为 type(img) 。
-
图像形状 - 它是以 [H, W, C] 格式表示的形状。其中 H,W 和 C 分别是图像的 高度,宽度和通道数 ,我们可以将其访问为 img.shape 。
-
图像大小 - 它是图像中像素的总数。它也是数组中元素的总数。我们可以将其访问为 img.size 。
-
数据类型 - 它是图像数组元素的dtype。我们可以将其访问为 img.dtype 。
5 图片保存 imwrite(filename,img) filename表示保存的文件名称,img是需要保存的图像对象。
创建窗口,读取显示和保存图像的实例如下:
import cv2 #创建窗口 cv2.namedWindow('img',cv2.WINDOW_NORMAL) cv2.resizeWindow('img',640,480) #读取图片 img = cv2.imread('./cat.jpg') while True: cv2.imshow('img',img) key = cv2.waitKey(0) #该函数的返回值为ASCLL码,参数0表示:等待 0 毫秒后,用户可以通过按键盘上的任意键来销毁所有窗口。 if key == ord('q'): #如果键盘输入q,退出 break elif key == ord('s'): #如果键盘输入s,保存图片到 当前文件夹下 cv2.imwrite('./mycat.png',img) else: print(key) cv2.destroyAllWindows() #销毁当前所有窗口
标签:窗口,img,python,读写,cv2,opencv,图像,图片 From: https://www.cnblogs.com/libai123456/p/17528760.html