【python-opencv 】一、图像的加载与保存
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图像处理之图像的读取、显示与保存操作【测试可用】
-
浅谈Tensorflow模型的保存与恢复加载
-
python网络爬虫-cookie的原理、保存与加载
-
未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
-
基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)
-
机器学习:模型的保存与加载
-
机器学习与深度学习:模型的保存和加载
-
python之cv2与图像的载入、显示和保存实例
-
【python-opencv 】一、图像的加载与保存
-
Vue路由的模块自动化与统一加载实现