Python OpenCV:利用命令行进行人脸检测
我运行这个(第一个)启动latop的网络摄像头,这样我就可以在屏幕上看到自己Python OpenCV:利用命令行进行人脸检测,python,opencv,command-line,openbr,Python,Opencv,Command Line,Openbr,我运行这个(第一个)启动latop的网络摄像头,这样我就可以在屏幕上看到自己 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.COL
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上,并在自己的照片上成功运行命令:
br - gui -algorithm ShowFaceDetection -enrollAll -enroll /home/nakkini/Desktop/myself.png
我在终端上运行的上述命令显示了我的图片,并在我的脸周围画了一个正方形(人脸检测),它还以绿色突出显示了我的眼睛
我的梦想:
我想知道是否有办法将这个命令与上面的短程序结合起来,这样当网络摄像头启动时,我就可以看到被绿色矩形包围的脸了
我为什么需要这个?
我在纯OpenCV/Python中找到了类似的程序。然而,为了以后的需要,我需要比简单的人脸检测更多的东西,我自己判断OpenBR会让我省去很多头痛。这就是为什么我正在寻找一种方法来运行上面代码中的某个地方的命令行,这是第一步,也是一大步
提示:
代码中的帧
对应于命令行的imf.png
。要找到的解决方案将尝试将frame
代替imf.png
传递到程序本身的命令行
事先非常感谢
编辑: 在纠正了@Xavier解决方案的错误后,我没有任何错误。但是,程序没有按我的要求运行:
首先,相机启动,我看到了自己,但我的脸没有被绿色矩形检测到。第二,我按任意键退出,但程序不退出:它显示我自己的照片,并检测到我的脸。程序存在最后一次按键。我的目标是看到在相机功能期间检测到我的脸。您根本不需要openbr
只要看看opencv的类似的东西就行了
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()
我已经在Python中使用纯OpenCV功能运行了类似的代码。然而,我很想实现我的要求。但是我非常感谢你提供的有趣链接。非常感谢。当我在另一台机器上试用时,我会让你知道的。但是我认为你想写
imread()
而不是imwrite()
?关键是br
正在等待一个文件,而cv2.imwrite()
正在创建itAh,是的,你是对的。我刚刚收到一个关于系统的错误,它无法识别,但我会在互联网上检查。。我想我找到了类似于subprocess.Popen()
忘记导入操作系统;系统(…)别忘了在脚本顶部的导入操作系统-和gui之间有一个空格,它应该是:br-gui…
不是br-gui
@berak很好的观察,但我之前已经纠正了它。感谢you@berak如果你有时间,你可以看我的第三次编辑。谢谢将问题分为两部分:1)给定一个视频文件,进行人脸跟踪。2) 把它插到摄像机上。