【发布时间】:2020-01-06 01:08:35
【问题描述】:
我正在创建一个能够识别手势的深度学习程序。我已经完成了模型的训练,现在我需要在实时视频中使用它。 所以我正在尝试创建一个 openCV 程序,用户将他/她的手放在框架中的感兴趣区域(一个框)中,并且 ROI 将被馈送到我的 CNN 模型。根据我的 CNN 模型将回复的手势。
在我设法创建一个 300x300 的正方形(我的 ROI)的地方编写了这段代码,但是我如何使用该感兴趣区域将其提供给我的 CNN 模型? 我只想将那个正方形部分作为模型的输入。
import traceback
import cv2
import numpy as np
import math
cam = cv2.VideoCapture(0)
while(1):
try:
ret, frame = cam.read()
frame = cv2.flip(frame,1)
cv2.rectangle(frame,(200,100),(500,400),(0,255,0),2)
cv2.imshow('curFrame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception:
traceback.print_exc()
pass
cam.release()
cv2.destroyAllWindows()
** 附加
ROI = frame[100:200 , 100:200]
那条线是什么意思?
【问题讨论】:
-
永远不要在通用
except子句中使用pass。使用 Python 的 OpenCV 中的图像存储为 numpy 数组。请参阅有关索引的 numpy 文档以了解如何从数组中获取区域:docs.scipy.org/doc/numpy/reference/arrays.indexing.html -
frame[100:200 , 100:200]表示您希望在从 (100,100) 到 (200,200) 的frame中分开。是 y,x,比如frame[y1:y2, x1:x2]
标签: python opencv image-processing