我正在使用OpenCV通過相機檢測臉部的Android項目。該應用程序正確檢測臉部,但性能非常緩慢。我已經多次檢查過這個問題,但是我沒有找到任何解決方案。有什麼方法可以提高性能?如何在Android上通過OpenCV提高人臉檢測性能?
我的代碼是:
QVideoFrame FilterRunnable::run(QVideoFrame *input,
const QVideoSurfaceFormat &surfaceFormat,
QVideoFilterRunnable::RunFlags flags)
{
input->map(QAbstractVideoBuffer::ReadOnly);
QImage image = imageWrapper(*input);
image = image.scaled(640,480);
cv::Mat mat(image.width(),image.height(),CV_8UC3,image.bits(), image.bytesPerLine());
vector<Rect> detectedFaces;
detectedFaces.clear();
frontalFaceClassifier.detectMultiScale(mat, detectedFaces,
1.6, 3, 2 | CV_HAAR_SCALE_IMAGE , Size(60,60));
qDebug()<<"Cantidad de caras en el vector : " << detectedFaces.size();
if(detectedFaces.size() > 0){
actualFace = detectedFaces.at(0);
countDetectedFaces++;
qDebug()<<"**********qwerty**********"<<detectedFaces.size();
}
for(int i=0;i<detectedFaces.size();i++)
{
Rect dibujarCuadrado = detectedFaces.at(i);
cv::rectangle (mat, dibujarCuadrado, 20, 1, LINE_8, 0);
}
}
如果您將沉重的提升移動到移動設備上,並在雲端進行操作,該怎麼辦? – Wayne
非常感謝您的快速回答。我認爲這將是一個非常好的主意,儘管這要取決於我想要一個好的互聯網。你有沒有一些項目,它消除了雲的一些處理部分來指導我?如果是這樣會非常有幫助,非常感謝。 –
@Wayne請記住,這意味着將每個映像的大小推向服務器。我在一個城市,我的LTE上行速度僅爲2 Mbps(我敢打賭,有很多人的情況變得更糟) –