Почему процессор так высок, когда я запускаю видеокарту OpenCV read()

#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. Странный.