我有一个大图说(720 x 1290)。如果我将连续的帧传递到人脸检测,则会被延迟,并且相机的显示会滞后。

我所做的是将图像调整为(480 x 640)。人脸检测相当不错,相机也不会落后。

我在这里的问题是,我检测到一张脸并在图像中得到了该脸的坐标(480 x 640)。现在,我需要以(720 x 1290)绘制矩形,但是我只有(480 x 640)的面坐标。

现在,有了可用于(720 x 1290)的脸部坐标,如何在(480 x 640)图像中绘制矩形?

任何示例都将有所帮助。

最佳答案

如果脸部位置存储在cvRect faceRect中,而原始图像存储在cvMat OriginalImage中,请尝试以下操作:

cvRect enlargedFrame;
enlargedFrame.x = faceRect.x*originalImage.cols/720;
enlargedFrame.y = faceRect.y*originalImage.rows/480;
enlargedFrame.width = faceRect.width*originalImage.cols/720;
enlargedFrame.height = faceRect.height*originalImage.rows/480;

现在,使用扩大框的坐标绘制一个矩形。

如果决定裁切图像以使其更小,这将变得更加复杂。在这种情况下,您可以使用仿射变换。

关于c++ - OpenCV人脸检测速度较慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20499474/

10-11 19:38