【发布时间】:2016-09-12 13:41:32
【问题描述】:
我正在尝试使用 opencv 和 openkinect 库构建人脸检测。对于图像输入,我想使用 xbox kinect v2。我的代码基于 opencv 库中的人脸检测示例。我正在使用 mac。
这是我目前的代码:
import gab.opencv.*;
import java.awt.Rectangle;
/* KINECT */
import org.openkinect.freenect.*;
import org.openkinect.freenect2.*;
import org.openkinect.processing.*;
OpenCV opencv;
Kinect2 kinect2;
Rectangle[] faces;
void setup() {
opencv = new OpenCV(this, 640/2, 480/2);
size(640, 480);
// Kinectv2
kinect2 = new Kinect2(this);
kinect2.initVideo();
kinect2.initDevice();
opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
faces = opencv.detect();
}
void draw() {
opencv.loadImage(kinect2.getVideoImage());
image(kinect2.getVideoImage(), 0, 0, 640, 480);
noFill();
stroke(0, 255, 0);
strokeWeight(3);
for (int i = 0; i < faces.length; i++) {
rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
}
}
问题似乎出在“opencv.loadImage(kinect2.getVideoImage());”这一行因为检测不起作用。 当使用 isight 相机(使用内置功能“捕获”和“视频”-add-on)而不是 kinect 时,一切正常。
谁能帮忙?
【问题讨论】:
-
您必须更加具体。当你说问题似乎出在这条线上时,你到底是什么意思?当你说它不起作用时,你到底是什么意思?你期望会发生什么?相反会发生什么?不同的行为从哪一行代码开始?
-
opencv.loadImage(kinect2.getVideoImage()); //这里我希望opencv处理不工作的kinect记录的视觉数据。当我说“问题必须在那一行”时,它可能与opencv无法处理从函数“kinect2.getVideoImage()”获得的数据有关,并且可能需要不同形式的输入.图像(kinect2.getVideoImage(), 0, 0, 640, 480); // 这里我希望输出由正在工作的 xbox kinect 记录的视觉数据。
标签: opencv processing face-detection openkinect kinect-v2