#linux #anaconda #video-capture #opencv-python
#линукс #анаконда #видеозахват #opencv-python
Вопрос:
У меня есть минимальный захват видео OpenCV на Python, который сразу достигает 100% на большинстве из 8 ядер на моем сервере Linux. Я запустил cProfile в своем коде, и он потратил все свое время на {метод «чтение» объектов «cv2.VideoCapture»}.
import time def show_video(cap,cv2): failed = False ret, frame = cap.read() # lt;--- way to high CPU here if ret: cv2.imshow('frame',frame) else: failed = True if cv2.waitKey(1) amp; 0xFF == ord('q'): failed = True return (failed) def main(): import numpy as np import cv2 cap = cv2.VideoCapture(0) if not cap.isOpened(): print('could not open camera') failed = True failed = False while(not failed): failed = show_video(cap,cv2) cap.release() cv2.destroyAllWindows() if __name__ == '__main__': import cProfile, pstats profiler = cProfile.Profile() profiler.enable() main() profiler.disable() stats = pstats.Stats(profiler).sort_stats('cumtime') stats.print_stats()
У меня есть USB-камера Logitech C922. Я думаю, что может быть какой-то способ установить его в формат RAW или YUYV, чтобы избежать прохождения пути кода декомпрессии, я бы с удовольствием это попробовал. Но я не могу найти способ установить это в OpenCV v4.5.3 в Fedora 35 Linux под OpenCV Anaconda. Вот вывод cProfile:
77931 function calls (75617 primitive calls) in 14.565 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.068 0.068 14.565 14.565 /var/home/prentrodgers/Dropbox/Tutorials/speed-watch/minimal_opencv.py:14(main) 417 0.006 0.000 14.219 0.034 /var/home/prentrodgers/Dropbox/Tutorials/speed-watch/minimal_opencv.py:2(show_video) 417 12.524 0.030 12.524 0.030 {method 'read' of 'cv2.VideoCapture' objects} 417 1.422 0.003 1.422 0.003 {waitKey} 417 0.266 0.001 0.266 0.001 {imshow}
Комментарии:
1. Я должен добавить, что этот высокий процессор находится на моем сервере HP 800 с процессором Intel(R) Core(TM) i7-4790 с частотой 3,60 ГГц. 8 Нитей. частота процессора : 3790,874 МГц Размер кэша : 8192 КБ. Я запускаю тот же код на своем Jetson Nano, и он никогда не поднимается выше 20% процессора на 4 потоках процессоров ARM. Кажется странным, что производительность на Intel x86 намного хуже, чем на ARM, когда Open CV был первоначально запущен и все еще поддерживается Intel. Странный.