#python #opencv
Вопрос:
import time
import threading
import cv2
import imagezmq
import cv2
from flask import Flask, Response
import emotion_detection_copy, mouth_open_copy
import objectdetection
import final_recogcopy
import predict
import person_and_phone_copy, head_pose_copy
import eye_tracker_copy
import predict
import datetime
image_hub = imagezmq.ImageHub()
while True:
cam_id, frame = image_hub.recv_image()
print("before", datetime.datetime.now())
# predict.predict_labels(frame) # working fine
t1 =
threading.Thread(target=final_recogcopy.recog(frame),args())
t2 =
threading.Thread(target=objectdetection.object_detection(frame), args=()) # working fine
t3 = threading.Thread(target=emotion_detection_copy.detect_emotion(frame), args=()) # working fine
t4 = threading.Thread(target=person_and_phone_copy.person_and_phone_count(frame), args=()) # working fine
t5 = threading.Thread(target=head_pose_copy.head_position(frame), args=()) # working fine cv2.waitKey(1)
t6 = threading.Thread(target=eye_tracker_copy.gaze_detection(frame))
final_recogcopy.recog(frame)
t7 = threading.Thread(target=mouth_open_copy.mouth_opening_detection(frame))
x = datetime.datetime.now()
#print(start)
t2.start()
start1 = time.time()
t3.start()
start2 = time.time()
t4.start()
start3 = time.time()
t5.start()
start4 = time.time()
t6.start()
start5 = time.time()
t1.start()
start = time.time()
# t7.start()
t1.join()
y = datetime.datetime.now()
print("diff is", y - x)
end = time.time()
print(end)
print("Total time taken T1", start - end)
t2.join()
end1 = time.time()
print("Total time taken T2", start1 - end1)
t3.join()
end2 = time.time()
print("Total time taken T3", start2 - end2)
t4.join()
end3 = time.time()
print("Total time taken T4", start3 - end3)
t5.join()
end4 = time.time()
print("Total time taken T5", start4 - end4)
t6.join()
end5 = time.time()
print("Total time taken T6", start5 - end5)
# t7.join()
print("after", datetime.datetime.now())
cv2.imshow(cam_id, frame)
cv2.waitKey(1)
image_hub.send_reply(b'OK')
Я использую imagezmq для потоковой передачи видео на python с моей веб-камеры с помощью opencv. когда я транслирую обычное видео на сторону приемника, оно нормальное на стороне приемника, но при обработке, такой как обнаружение объектов и т. Д. На стороне приемника, видео не будет похоже на близкое к реальному времени, оно очень грязное и медленное . пожалуйста, помогите.
Thanks
Комментарии:
1. обработка занимает много времени. вот почему все идет медленнее.
2. да, Кристоф Раквиц ,для обработки кадра требуется 11 секунд, я также использовал многопоточность, но та же проблема существует. Как я могу продолжить, чтобы избежать этого .
3. вы могли бы начать с того, чтобы показать, что именно вы делаете
4. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
5. Видео обычно идет со скоростью 30 кадров в секунду. 11 секунд-это слишком долго, и даже если вы работаете в нескольких потоках, у вас будет накопление невыполненной работы. Некоторые вопросы для рассмотрения: вам нужно обработать это видео в реальном времени или вы можете сохранить его в файл и обработать в автономном режиме? Вам нужно обработать каждый отдельный видеокадр? Действительно ли вам нужны ВСЕ эти процессы для определения вашей проблемы? На каком оборудовании вы работаете (можно ли его улучшить)?