python-OpenCV 之 图片的打开,显示,保存

读取图片

函数原型:imread(const string& filename, int flags=1 )

flags = 0时以灰度图形式读取图片,默认读取原图片

创建窗口

函数原型:namedWindow(conststring&winname,intflags=WINDOW_AUTOSIZE)

winnname:自定义的窗口名称

intflags:

    cv.WINDOW_AUTOSIZE:窗口大小自动调整到显示图片的大小

    cv.WINDOW_NORMAL:可改变大小的窗口

显示图片

函数原型:imshow(const string& winname, InputArray src)

winname:图片显示的窗口

src:numpy数组,即图片数据

保存图片

 函数原型:imwrite(const string& filename, InputArray img, const vector& params=vector() )

 params中的有两个参数,分别为图片种类和图片质量,具体如下:

    JPEG:压缩质量 ( cv.IMWRITE_JPEG_QUALITY ),从0到100(数值越高质量越好),默认值为95。     

    PNG:压缩等级( cv.IMWRITE_PNG_COMPRESSION ) ,从0到9。 数值越高,文件大小越小,压缩时间越长。默认值 为3。

注意: cv.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int

示例代码 

import cv2 as cv

# 读取图片
# 函数原型:imread(const string& filename, int flags=1 )
# flags = 0时以灰度图形式读取图片,默认读取原图片
src = cv.imread('test.jpg')

# 创建窗口
# 函数原型:namedWindow(conststring&winname,intflags=WINDOW_AUTOSIZE)
# winnname:自定义的窗口名称
# CV_WINDOW_AUTOSIZE 窗口大小自动调整到显示图片的大小, CV_WINDOW_NORMAL 可以改变窗口大小
cv.namedWindow('test', cv.WINDOW_NORMAL)

# 显示图片
# 函数原型:imshow(const string& winname, InputArray mat)
# winname:图片显示的窗口
# mat:numpy数组,即图片数据
cv.imshow('test', src)

cv.waitKey()

# 保存图片
# 函数原型:imwrite(const string& filename, InputArray img, const vector& params=vector() )
# params中的有两个参数,分别为图片种类和图片质量,具体如下
# JPEG:压缩质量 ( cv.IMWRITE_JPEG_QUALITY ),从0到100(数值越高质量越好),默认值为95。cv.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
# PNG:compression level ( cv.IMWRITE_PNG_COMPRESSION ) 从0到9。 数值越高,文件大小越小,压缩时间越长。默认值为3。
# PPM, PGM, or PBM:二进制标志 ( cv.IMWRITE_PXM_BINARY ),0 或 1。默认值为1
cv.imwrite('survetest.jpg', src, [int(cv.IMWRITE_JPEG_QUALITY), 10])

cv.waitKey()

cv.destroyAllWindows()

 

打开保存视频,您可以使用Python中的OpenCV库。以下是一个示例代码,展示了如何打开视频、逐帧读取视频、处理每一帧,并将处理后的帧保存为新的视频文件: ```python import cv2 # 打开原始视频文件 cap = cv2.VideoCapture('input_video.mp4') # 检查视频是否成功打开 if not cap.isOpened(): print("无法打开视频文件") exit() # 获取原始视频的基本信息 fps = cap.get(cv2.CAP_PROP_FPS) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象,用于保存处理后的视频 fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output_video.avi', fourcc, fps, (width, height)) while True: # 逐帧读取视频 ret, frame = cap.read() # 检查是否到达视频末尾 if not ret: break # 在每一帧上进行处理(这里只是一个示例,您可以根据需要进行自定义操作) processed_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将处理后的帧写入输出视频文件 out.write(processed_frame) # 在窗口中展示每一帧 cv2.imshow('Video', processed_frame) # 按下'q'键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放cap和out对象,关闭窗口 cap.release() out.release() cv2.destroyAllWindows() ``` 请确保将代码中的`input_video.mp4`替换为实际的输入视频文件路径,将`output_video.avi`替换为您想要保存的输出视频文件路径。这段代码将逐帧读取输入视频,并在每一帧上进行处理(在示例中,将每一帧转换为灰度图像),最后将处理后的帧写入输出视频文件。同时,每一帧也会在一个窗口中展示出来。按下 'q' 键可以退出循环。 希望这可以满足您的需求!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值