我运行这个(第一个)示例,它启动了我的笔记本电脑的网络摄像头,以便我可以在屏幕上看到我自己。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
我在Ubuntu 14.04 LTS上安装了OpenBr,我成功地在我自己的照片上运行了这个命令:
br - gui -algorithm ShowFaceDetection -enrollAll -enroll /home/nakkini/Desktop/myself.png
我在终端上运行的上面的命令显示了我的照片,并在我的脸周围画了一个正方形(面部检测),它还用绿色突出了我的眼睛。
我的梦想:
我想知道是否有一种方法将这个命令与上面的短程序结合起来,以便当网络摄像头启动时,我可以看到我的脸被绿色矩形包围?
为什么我需要这个
我在纯OpenCV/Python中找到了类似的程序。但是,对于以后的需求,我需要更多的东西,而不是简单的人脸检测,我自己判断,OpenBR会帮我省去很多麻烦。这就是为什么我正在寻找一种方法来运行命令行在上面的代码中的某个地方作为第一步,但大的一步。
提示:
代码中的frame
对应命令行的myself.png
。要找到的解决方案将尝试将frame
在myself.png
的位置传递到程序本身的命令行。
提前谢谢你。
编辑:
在纠正@Xavier的解决方案的拼写错误后,我没有错误。然而,程序没有按我想要的方式运行:
首先,摄像机启动,我看到了我自己,但我的脸没有被绿色矩形检测到。其次,我按任何键退出,但程序不退出:它显示我自己的照片,我的脸检测。最后按下的键存在于程序中。我的目标是看到我的脸在相机功能中被检测到。
您根本不需要openbr。
查看opencv的python人脸检测教程
像这样应该可以工作
import numpy as np
import cv2
import os
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.imwrite( "/home/nakkini/Desktop/myself.png", gray );
os.system('br - gui -algorithm -ShowFaceDetection -enrollAll -enroll /home/nakkini/Desktop/myself.png')
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()