#python #flask #mediapipe
Вопрос:
У меня есть программа flask, которая использует OpenCV и mediapipe. Приложение создает веб-сервер, который получает входной видеофайл, а затем обрабатывает данные на нем с помощью mediapipe.
Когда я запускаю свой код в виртуальной среде, я получаю следующую ошибку.
Debugging middleware caught exception in streamed response at a point where response headers were already sent.
Traceback (most recent call last):
File "/Users/alexandrafalkner/Desktop/vandy/5278/CS5279-Project-Gesture-Recognition/lib/python3.9/site-packages/werkzeug/wsgi.py", line 462, in __next__
return self._next()
File "/Users/alexandrafalkner/Desktop/vandy/5278/CS5279-Project-Gesture-Recognition/lib/python3.9/site-packages/werkzeug/wrappers/response.py", line 49, in _iter_encoded
for item in iterable:
File "/Users/alexandrafalkner/Desktop/vandy/5278/CS5279-Project-Gesture-Recognition/lib/python3.9/site-packages/flask/helpers.py", line 131, in generator
yield from gen
File "/Users/alexandrafalkner/Desktop/vandy/5278/CS5279-Project-Gesture-Recognition/Elastic Beanstalk/GestureRec/application.py", line 67, in gen
image = detector.image
AttributeError: 'Detect' object has no attribute 'image'
192.168.1.248 - - [12/Jul/2021 17:25:32] "GET /video_feed HTTP/1.1" 200 -
192.168.1.248 - - [12/Jul/2021 17:25:33] "GET /favicon.ico HTTP/1.1" 200 -
OpenCV: Couldn't read video stream from file "https://r4---sn-ab5sznle.googlevideo.com/videoplayback?expire=1626146734amp;ei=TrPsYI7TAsi2hwbUhZzgBgamp;ip=69.169.5.159amp;id=o-AArBuxjnP3vAs1NJIUfCHWQig2OOQnb8QfLhJehoUaRcamp;itag=22amp;source=youtubeamp;requiressl=yesamp;mh=Tmamp;mm=31,26amp;mn=sn-ab5sznle,sn-p5qs7n76amp;ms=au,onramp;mv=mamp;mvi=4amp;pl=23amp;initcwndbps=2586250amp;vprv=1amp;mime=video/mp4amp;ns=BagCNZ55LiZyxfj48GVlM_IGamp;ratebypass=yesamp;dur=291.062amp;lmt=1614364379358865amp;mt=1626124648amp;fvip=4amp;fexp=24001373,24007246amp;beids=9466587amp;c=WEBamp;txp=1432434amp;n=ssmaZFn8YLnHUKV5Jwamp;sparams=expire,ei,ip,id,itag,source,requiressl,vprv,mime,ns,ratebypass,dur,lmtamp;sig=AOq0QJ8wRgIhAMayd18uVr6ho_GzGCI-xmLforRk0tlIAf2QfHrlcZKfAiEAgiGe3e3MuyQvIsHOXfObzJgrSb6LhyeL63pLdqpSwyI=amp;lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbpsamp;lsig=AG3C_xAwRQIhAIpFmquDVDUoAPCZjsRQbhQsPX9lA44HCguTlmnBogi1AiAgjEhIg9xY7yQvlpjxWA6GDgVNPlEqcSsodg5FW2sEWQ=="
[ERROR:0] global /private/var/folders/rs/82_yq8xs1q15sncx9xmsh1nh0000gn/T/pip-install-7w_cmwpj/opencv-python/opencv/modules/videoio/src/cap.cpp (162) open VIDEOIO(CV_IMAGES): raised OpenCV exception:
OpenCV(4.5.3) /private/var/folders/rs/82_yq8xs1q15sncx9xmsh1nh0000gn/T/pip-install-7w_cmwpj/opencv-python/opencv/modules/videoio/src/cap_images.cpp:235: error: (-5:Bad argument) CAP_IMAGES: error, expected '0?[1-9][du]' pattern, got: https://r4---sn-ab5sznle.googlevideo.com/videoplayback?expire=1626146734amp;ei=TrPsYI7TAsi2hwbUhZzgBgamp;ip=69.169.5.159amp;id=o-AArBuxjnP3vAs1NJIUfCHWQig2OOQnb8QfLhJehoUaRcamp;itag=22amp;source=youtubeamp;requiressl=yesamp;mh=Tmamp;mm=31,26amp;mn=sn-ab5sznle,sn-p5qs7n76amp;ms=au,onramp;mv=mamp;mvi=4amp;pl=23amp;initcwndbps=2586250amp;vprv=1amp;mime=video/mp4amp;ns=BagCNZ55LiZyxfj48GVlM_IGamp;ratebypass=yesamp;dur=291.062amp;lmt=1614364379358865amp;mt=1626124648amp;fvip=4amp;fexp=24001373,24007246amp;beids=9466587amp;c=WEBamp;txp=1432434amp;n=ssmaZFn8YLnHUKV5Jwamp;sparams=expire,ei,ip,id,itag,source,requiressl,vprv,mime,ns,ratebypass,dur,lmtamp;sig=AOq0QJ8wRgIhAMayd18uVr6ho_GzGCI-xmLforRk0tlIAf2QfHrlcZKfAiEAgiGe3e3MuyQvIsHOXfObzJgrSb6LhyeL63pLdqpSwyI=amp;lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbpsamp;lsig=AG3C_xAwRQIhAIpFmquDVDUoAPCZjsRQbhQsPX9lA44HCguTlmnBogi1AiAgjEhIg9xY7yQvlpjxWA6GDgVNPlEqcSsodg5FW2sEWQ== in function 'icvExtractPattern'
Exception in thread Thread-5:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 950, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "/Users/alexandrafalkner/Desktop/vandy/5278/CS5279-Project-Gesture-Recognition/Elastic Beanstalk/GestureRec/get_video.py", line 226, in detect
self.mp_drawing = mp.solutions.drawing_utils # Drawing helpers
AttributeError: module 'mediapipe' has no attribute 'solutions'
Ниже приведен HTML-код:
header_text = '''
<html>n<head> <title>Gesture Recognition</title> </head>n<body>'''
instructions = '''
<p><em>Gesture Recognition</em>:</p>'''
home_link = '<p><a href="/">Back</a></p>n'
footer_text = '</body>n</html>'
upload_form = b'''
<!doctype html>
<title>Gesture recognition</title>
<h1>Upload MP4 video for Fortnite dance gesture recognition</h1>
<form method="POST">
<input name="YouTube URL">
<input type="submit">
</form>
'''
Это строка 67 с первой ошибкой:
image_path = os.path.join(os.getcwd(),'live.jpeg')
image = detector.image
И строка 226 со второй ошибкой атрибута (я импортировал mediapipe как mp):
def detect(self,model_name,source = 0,trail_frames=[5,15]):
if source != 0:
self.yt_url = 'https://www.youtube.com/watch?v='
vPafy = pafy.new(self.yt_url source)
play = vPafy.getbest(preftype="mp4")
source = play.url
cap = cv2.VideoCapture(source)
# Initiate holistic model
with open(model_name '_body_language.pkl', 'rb') as f:
model = pickle.load(f)
self.mp_drawing = mp.solutions.drawing_utils # Drawing helpers
self.mp_holistic = mp.solutions.holistic # Mediapipe Solutions
frame_num = 0
frame_list = []
Он работает на компьютере моего партнера, поэтому я думаю, что проблема не в коде, а в том, как я загрузил и настроил mediapipe и, возможно, OpenCV.
Спасибо!
Комментарии:
1. что такое
detector
? Я не вижу этого в коде. Ошибка показывает, чтоdetector
этого не произошлоimage
.2. может быть, вы установили неправильно или устарели
mediapipe
, и этого нетsolutions
. ИЛИ, может быть, вы создали собственный файлmediapipe.py
и теперьimport
загружаете свой файлmediapipe.py
вместо модуляmediapipe
— вы можете проверитьprint( mp.__file__ )
, правильно ли вы импортируете файл.