回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我对OpenCV很陌生,但我需要找到一种使用网络摄像头检测人脸的方法。我从<a href="http://www.lucaamore.com/?p=638" rel="nofollow">here</a>找到了以下代码。这是原始代码。我正在使用<code>Python 2.7</code>和<code>opencv 3.0.0-beta</code>版本和Windows 8.1。</p>
<pre><code>import cv2 as cv
import time
import Image
def DetectFace(image, faceCascade):
min_size = (20,20)
image_scale = 2
haar_scale = 1.1
min_neighbors = 3
haar_flags = 0
grayscale = cv.CreateImage((image.width, image.height), 8, 1)
smallImage = cv.CreateImage(
(
cv.Round(image.width / image_scale),
cv.Round(image.height / image_scale)
), 8 ,1)
cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)
cv.Resize(grayscale, smallImage, cv.CV_INTER_LINEAR)
cv.EqualizeHist(smallImage, smallImage)
faces = cv.HaarDetectObjects(
smallImage, faceCascade, cv.CreateMemStorage(0),
haar_scale, min_neighbors, haar_flags, min_size)
if faces:
for ((x, y, w, h), n) in faces:
pt1 = (int(x * image_scale), int(y * image_scale))
pt2 = (int((x + w) * image_scale), int((y + h) * image_scale))
cv.Rectangle(image, pt1, pt2, cv.RGB(255, 0, 0), 5, 8, 0)
return image
capture = cv.CaptureFromCAM(0)
faceCascade = cv.Load("haarcascades/haarcascade_frontalface_alt.xml")
while (cv.WaitKey(15)==-1):
img = cv.QueryFrame(capture)
image = DetectFace(img, faceCascade)
cv.ShowImage("face detection test", image)
cv.ReleaseCapture(capture)
</code></pre>
<p>当我运行这个程序时,我有个错误说,没有名为<strong>Image</strong>的模块。我对它进行了注释,然后再次运行,并对代码进行了以下更改。</p>
<p><code>capture = cv.CaptureFromCAM(0)</code>到<code>capture = cv.VideoCapture(0)</code>和
^根据弹出的错误{<cd5>}到<code>waitKey</code>。</p>
<p>但现在它说</p>
<p>我觉得有版本问题什么的。我已经包含了<code>haarcascades</code>文件。请帮助我更正此错误并运行此代码。正如我所提到的,我是opencv的新生。</p>