【发布时间】:2018-06-18 13:46:01
【问题描述】:
我有一个视频文件,我需要逐帧处理,然后需要在帧中显示结果。目前我正在按顺序进行处理并一一显示帧。
现在我想并行处理帧而不是顺序处理。一旦处理了 X 个帧,则 cv2.imshow 必须出现,并且必须以正确的顺序显示已处理的帧。
目前我的顺序代码如下所示
import cv2
import requests
def process_frame(bgr_image, jpg_as_text):
try:
# Post to api for processing and get the results
# result = requests.post("example.com", data={"jpg": jpg_as_text})
# Add results to bgr_image
# cv2.putText()
except Exception as e:
print(e)
pass
# Show the frame
cv2.imshow("frame", bgr_image)
video = cv2.VideoCapture("video.mp4")
i = 0
while video.isOpened():
ret, bgr_image = video.read()
if ret == True:
img_height, img_width, _ = bgr_image.shape
jpg_as_text = cv2.imencode(".jpg", bgr_image)[1].tostring()
process_frame(bgr_image, jpg_as_text)
print(i)
i += 1
else:
break
if cv2.waitKey(1) & 0xFF == ord("q"):
break
video.release()
cv2.destroyAllWindows()
现在我应该重构什么来进行并行处理并在处理 X 帧后预览帧。
【问题讨论】:
标签: python multithreading opencv asynchronous multiprocessing