我正在嘗試使用下面的代碼使用kinect來檢測人臉。 OpenCV的detectMultiScale()在我使用我的電腦攝像頭時可以正確檢測臉部,但它似乎不能處理來自kinect的圖像。OpenCV未檢測到來自Kinect的人臉
Device device;
VideoFrameRef colorFrame;
VideoStream ColorStream;
Mat colorImage, grayScaleFrame;
colorStream.create(device, SENSOR_COLOR);
colorStream.start();
while (1){
colorStream.readFrame(&colorFrame);
const RGB888Pixel *imageBuffer = (const RGB888Pixel*)colorFrame.getData();
colorImage.create(colorFrame.getHeight(), colorFrame.getWidth(), CV_8UC3);
memcpy(colorImage.data, imageBuffer, 3 * colorFrame.getHeight() * colorFrame.getWidth() * sizeof(uint8_t));
//face detection
blur(colorImage, colorImage, Size(2, 2), Point(-1, -1), BORDER_DEFAULT);
cvtColor(colorImage, grayScaleFrame, CV_BGR2GRAY);
equalizeHist(grayScaleFrame, grayScaleFrame);
classifier.detectMultiScale(grayScaleFrame, faces, 1.1, 3, CV_HAAR_FIND_BIGGEST_OBJECT|CV_HAAR_SCALE_IMAGE, Size(30, 30));
}
任何想法爲什麼會發生這種情況?
謝謝!
這是您使用Kinect的驅動程序? Freenect還是OpenNI? 檢查來自Kinect的圖像是BGR還是RGB。 – madduci
@blackibiza - 我正在與OpenNI合作。我試過了CV_BGR2GRAY和CV_RGB2GRAY,程序仍然沒有檢測到任何面孔 – Stralo
您是否嘗試保存來自kinect的圖像以檢查一切是否如您所料?在嘗試運行這個單一圖像中的opencv算法以檢查該算法是否適用於此圖像... – api55