一、保存圖像
cv2.save()是OpenCV中常用的一個函數,可以用於保存圖像文件。通過這個函數,我們可以將處理後的圖像保存下來,以後可以隨時使用。在圖像處理中,這是非常必要且常用的一個操作。下面來看一下如何使用cv2.save()保存圖像。代碼如下:
import cv2
# 讀取圖像
img = cv2.imread('image.jpg')
# 保存圖像
cv2.imwrite('new_image.jpg', img)
首先,我們使用cv2.imread()函數讀取了一張圖像文件,然後使用cv2.imwrite()函數保存圖像文件。函數的第一個參數是保存文件的名稱(包含路徑),第二個參數是我們要保存的圖像。通過這個函數,我們可以將處理後的圖像保存為JPG、PNG等格式。
二、保存視頻
除了可以保存圖像,還可以使用cv2.save()函數保存視頻文件。在視頻處理和分析中,這也是常用的一個操作。下面看一下如何使用cv2.save()保存視頻文件。代碼如下:
import cv2
# 讀取視頻
video = cv2.VideoCapture('video.avi')
# 獲取視頻幀率
fps = video.get(cv2.CAP_PROP_FPS)
# 獲取視頻尺寸
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)), int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 定義視頻編碼器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 創建VideoWriter對象
writer = cv2.VideoWriter('new_video.avi', fourcc, fps, size)
# 讀取並保存視頻幀
while True:
ret, frame = video.read()
if ret:
writer.write(frame)
else:
break
# 釋放資源
video.release()
writer.release()
首先,我們使用cv2.VideoCapture()函數打開一段視頻文件,然後使用cv2.CAP_PROP_FPS獲取視頻幀率,使用cv2.CAP_PROP_FRAME_WIDTH和cv2.CAP_PROP_FRAME_HEIGHT獲取視頻尺寸。然後,我們定義一個視頻編碼器,這裡使用的是XVID視頻編碼器(也可以使用其他視頻編碼器),並使用cv2.VideoWriter()函數創建一個VideoWriter對象。最後,使用while循環讀取視頻幀並保存到新的視頻文件中,直到讀取完所有幀為止。注意,每一幀都需要調用writer.write()函數進行保存。最後,釋放資源。
三、保存攝像頭視頻
除了可以保存已有的視頻文件,還可以使用cv2.save()函數保存攝像頭視頻。這個操作也很常用,比如我們要在攝像頭錄製視頻時,即時保存視頻文件。下面看一下如何使用cv2.save()保存攝像頭視頻。代碼如下:
import cv2
# 打開攝像頭
cap = cv2.VideoCapture(0)
# 獲取攝像頭的幀率
fps = int(cap.get(cv2.CAP_PROP_FPS))
# 獲取攝像頭的尺寸
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# 定義視頻編碼器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 創建VideoWriter對象
writer = cv2.VideoWriter('camera_video.avi', fourcc, fps, size)
# 讀取並保存視頻幀
while True:
ret, frame = cap.read()
cv2.imshow('frame', frame)
writer.write(frame)
if cv2.waitKey(1) == ord('q'):
break
# 釋放攝像頭及資源
cap.release()
writer.release()
cv2.destroyAllWindows()
首先,我們使用cv2.VideoCapture()函數打開攝像頭,並使用cv2.CAP_PROP_FPS和cv2.CAP_PROP_FRAME_WIDTH、cv2.CAP_PROP_FRAME_HEIGHT獲取攝像頭的幀率和尺寸。然後,我們同樣定義一個視頻編碼器和一個VideoWriter對象,用於保存攝像頭視頻。在while循環中,我們使用cap.read()函數讀取攝像頭的每一幀,並使用cv2.imshow()函數顯示攝像頭圖像。然後,每一幀都需要調用writer.write()函數進行保存。當用戶按下「q」鍵時,程序退出while循環,並釋放攝像頭及資源。
四、保存音頻
除了保存圖像和視頻外,cv2.save()函數還可以保存音頻文件。在音頻處理和編輯中,這也是常用的操作。下面看一下如何使用cv2.save()保存音頻文件。代碼如下:
import numpy as np
import soundfile as sf
# 讀取音頻文件
data, sample_rate = sf.read('audio.wav')
# 生成新的音頻數據
new_data = np.zeros_like(data)
# 保存音頻文件
sf.write('new_audio.wav', new_data, sample_rate)
首先,我們使用soundfile庫的sf.read()函數讀取一段音頻文件,然後使用np.zeros_like()函數生成新的音頻數據(這裡將所有數據都設置為0)。最後,使用soundfile庫的sf.write()函數保存音頻文件。函數的第一個參數是保存文件的名稱(包含路徑),第二個參數是要保存的音頻數據,第三個參數是音頻的採樣率。
原創文章,作者:OBWZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147141.html