我有 3 個 .py 檔案,將視頻分成幀,對這些幀應用顯著性,然后將這些幀組合成視頻。我想要一個 .py 檔案來完成上述所有操作,而不是運行三個單獨的檔案。我提供了以下代碼。
1. Spliting video.py
import cv2
capture = cv2.VideoCapture('vids/tm_test.mp4')
fps = capture.get(cv2.CAP_PROP_FPS)
print(fps)
frameNr = 0
while True:
success, frame = capture.read()
if success:
cv2.imwrite(f'Output/frame_{frameNr}.jpg', frame)
else:
break
frameNr = frameNr 1
capture.release()
2. Saliency.py
import cv2
from glob import glob
source = r'Output/*.jpg'
path_to_save = 'images/'
saliency = cv2.saliency.StaticSaliencyFineGrained_create()
def main():
i = 0
for fn in glob(source):
image = cv2.imread(fn)
(ret, img_sal) = saliency.computeSaliency(image)
saliencyMap = (img_sal * 255).astype('uint8')
cv2.imwrite(path_to_save 'test_salient_tm ' str(i) '.jpg', saliencyMap)
i = 1
if __name__ == '__main__':
main()
3. Combining after saliency.py
import cv2
import os
image_folder = 'images/'
video_name = 'vids/tm_test_salient.mp4'
images = [img for img in os.listdir(image_folder) if img.endswith('.jpg')]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter(video_name, fourcc, 56.0, (width, height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
如何將這三個組合成一個檔案來執行這些功能。謝謝
uj5u.com熱心網友回復:
以下是組合的開始。
import cv2
from glob import glob
import os
# globals
capture = cv2.VideoCapture('vids/tm_test.mp4')
saliency = cv2.saliency.StaticSaliencyFineGrained_create()
fps = capture.get(cv2.CAP_PROP_FPS)
source = r'Output/*.jpg'
path_to_save = 'images/'
frameNr = 0
image_folder = 'images/'
video_name = 'vids/tm_test_salient.mp4'
# Functions
# Inputs
# Processing
while True:
success, frame = capture.read()
if success:
cv2.imwrite(f'Output/frame_{frameNr}.jpg', frame)
else:
break
frameNr = frameNr 1
capture.release()
i = 0
for fn in glob(source):
image = cv2.imread(fn)
(ret, img_sal) = saliency.computeSaliency(image)
saliencyMap = (img_sal * 255).astype('uint8')
cv2.imwrite(path_to_save 'test_salient_tm ' str(i) '.jpg',
saliencyMap)
i = 1
images = [img for img in os.listdir(image_folder) if img.endswith('.jpg')]
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter(video_name, fourcc, 56.0, (width, height))
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()
video.release()
# Outputs
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/534355.html
