您的位置:

Python图像处理 - 如何使用cv2.imwrite保存图像文件

一、cv2.imwrite函数的概述

cv2.imwrite函数是OpenCV中一个非常重要的函数,主要用来将一个numpy数组里的数据保存成图片文件到本地磁盘。该函数第一个参数是保存图片的文件名,第二个参数是要保存的图片数据,第三个参数是在保存图片时需要指定的一些参数

代码示例:

import cv2

image = cv2.imread('example.jpg') #读取图像
cv2.imwrite('saved_image.jpg',image) #将图像保存到本地磁盘

二、cv2.imwrite函数参数的介绍

1. filename:保存图片的文件名,文件名应以.jpg,.png,.bmp,.tiff等格式结尾。

2. img:要保存的图像数据。注意图像必须是numpy数组格式。

3. params:该参数是一个可选的参数,用来指定保存图像的一些特殊的格式,如指定JPEG图像的质量,格式为[CV_IMWRITE_JPEG_QUALITY, 95]。

代码示例:

import cv2

image = cv2.imread('example.jpg')
cv2.imwrite('saved_image.jpg',image,[cv2.IMWRITE_JPEG_QUALITY,95])

三、如何使用cv2.imwrite保存多个图片文件

当需要保存多个图片文件时,我们可以使用循环来迭代每个要保存的图片,然后逐个保存到本地磁盘上。

代码示例:

import cv2
import os

folder_path = 'images/'
if not os.path.exists(folder_path):
    os.makedirs(folder_path)

for i in range(10):
    img = np.random.randint(0,255,(256,256,3)).astype(np.uint8)
    cv2.imwrite(folder_path+str(i)+'.jpg',img)

四、使用cv2.imwrite保存视频中的图帧数据

在处理视频时,我们通常需要提取视频中的某些图帧,然后保存这些图帧到本地磁盘上。如下代码展示了如何从视频中提取每个第30帧图像,然后保存到本地磁盘上。

代码示例:

import cv2

video_path = 'example.mp4'
cap = cv2.VideoCapture(video_path)

# 视频的帧数
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

for i in range(frame_count):
    ret,frame = cap.read()
    if i%30 == 0: #每第30帧保存
        cv2.imwrite('frame_'+str(i)+'.jpg',frame)

cap.release()

五、如何使用cv2.imwrite保存灰度图像

在一些情况下,我们需要将彩色图像转换为灰度图像,然后保存到本地磁盘上。使用cv2.imwrite函数保存灰度图像与保存彩色图像的方式是相同的,只需要将灰度图像的色彩模式设置为cv2.COLOR_RGB2GRAY即可。

代码示例:

import cv2

image_color = cv2.imread('example.jpg')

#将彩色图像转为灰度图像
image_gray = cv2.cvtColor(image_color,cv2.COLOR_RGB2GRAY)

#保存灰度图像
cv2.imwrite('example_gray.jpg',image_gray)