欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【python-opencv 】一、图像的加载与保存

程序员文章站 2022-04-15 22:53:16
1.准备工作 没学过Python... 我先参考了牛客网的Python教程:https://www.nowcoder.com/tutorial/10005/dc2c82d6557548beb0e2252869be13d8(没看多少,不会再回来查) 首先装了个python https://www.py ......

1.准备工作

没学过python...

我先参考了牛客网的python教程:(没看多少,不会再回来查)

首先装了个python  

然后再cmd下输入  pip install opencv-python

还装了个ide   pycharm

 

2.读取和显示一张图片

import cv2 as cv
img = cv.imread("1.png")#读取图片 这里1.png和python文件在同一目录下
cv.imshow("1",img)#显示图片  ""里面是窗口的名称

 

3.查阅的函数资料

imread函数

imread为image read的缩写,即图像读取的意思

【函数原型】cv2.imread(path_of_image, intflag)

参数1:需要读入图像的路径

参数2:标志以什么形式读入图像,可以选择一下方式:

cv2.imread_color【1】: 加载彩色图像。任何图像的透明度都将被忽略。它是默认标志
cv2.imread_grayscale【0】: 以灰度模式加载图像
cv2.imread_unchanged【-1】: 保留读取图片原有的颜色通道

inshow函数

【函数原型】cv2.imshow(windows_name, image)

参数1: 窗口名称(字符串)
参数2: 图像对象,类型是numpy中的ndarray类型,注:这里可以通过imutils模块改变图像显示大小

 

cvnamedwindow函数

该函数为开放计算机视觉(opencv)库库函数,用来创建窗口显示图像

 cv2.namedwindow(‘窗口标题’,默认参数)

窗口大小可以改变:cv2.namedwindow("image",cv2.window_normal)   或者  cv2.namedwindow('image',cv2.window_gui_normal)

窗口大小不可以改变:cv2.namedwindow("image",cv2.window_autosize)

窗口大小自适应比例:cv2.namedwindow("image",cv2.window_freeratio)

窗口大小保持比例:cv2.namedwindow("image",cv2.window_keepratio)

显示色彩变成暗色:cv2.namedwindow('image',cv2.window_gui_expanded)

cv2.imshow(‘窗口标题’,image),如果前面没有cv2.namedwindow,就自动先执行一个cv2.namedwindow()

 

关闭特定窗口:void destroywindow(const string& winname)

关闭所有highgui窗口:void destroyallwindows()

 

cvwaitkey函数

函数的功能是不断刷新图像,频率时间为delay,单位为ms

它显示指定的图像。毫秒。否则,它就不会显示图像。例如,waitkey(0)将无限地显示窗口,直到任何按键按下(它适合于图像显示)

waitkey(25)将显示一个框架,25毫秒后,显示将自动关闭  (如果把它放到一个循环中去读视频,它将显示视频帧逐帧)

1.waitkey()与waitkey(0),都代表无限等待,waitkey函数的默认参数就是int delay = 0,故这俩形式本质是一样的。

2.waitkey(n),等待n毫秒后,关闭显示的窗口。

 

cvcvtcolor是opencv里的颜色空间转换函数

 

4.代码

 1 import cv2 as cv
 2 import numpy as np
 3 
 4 
 5 def get_image_info(image):
 6     print(type(image))
 7     print(image.shape)
 8     print(image.size)  # 高、宽、通道数
 9     print(image.dtype)  # 字节位数占多数 高*宽*通道数
10     pixel_data = np.array(image)
11     print(pixel_data)
12 
13 
14 def video_demo():
15     capture = cv.videocapture(0)  # 既支持视频文件的读取,也支持从摄像机中视频的读取
16     while true:
17         ret, frame = capture.read()
18         # ret是布尔值,如果读取帧是正确的则返回true,如果文件读取到结尾,它的返回值就为false,后面的frame该帧图像的三维矩阵bgr形式
19         # frame = cv.flip(frame, 1) #左右镜像
20         cv.namedwindow("video", cv.window_autosize)
21         cv.imshow("video", frame)
22         c = cv.waitkey(50)      # 如果50ms内有按键  有返回按键的ascii码值
23         if c == 27:     # esc键的ascii码十进制表示为27
24             break
25 
26 
27 src = cv.imread("1.png")
28 cv.namedwindow("image", cv.window_normal)
29 cv.imshow("image", src)     # 显示读进来的图片
30 get_image_info(src)
31 gray = cv.cvtcolor(src, cv.color_bgr2gray)
32 cv.imwrite("1_gray.png", gray)      # 保存修改后的图片
33 video_demo()
34 cv.waitkey(0)
35 cv.destroyallwindows()

 

5.效果

显示的图片

【python-opencv 】一、图像的加载与保存

 

窗口大小是可改变的

【python-opencv 】一、图像的加载与保存

 

【python-opencv 】一、图像的加载与保存

图片在计算机看来是一个结构化存储的数据信息

图像属性:通道数目、高和宽、像素数据、图像类型

 【python-opencv 】一、图像的加载与保存