私は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
迅速な回答ありがとうございました。私はそれが非常に良いアイデアだろうと思うが、それは私が思う良いインターネットを持つことに多く依存するだろう。あなたは私を導くためにクラウドにいくつかの処理部分を削除するいくつかのporjectを持っていますか?もしそうなら、大きな助けになるでしょう、ありがとうございました。 –
@Wayneイメージあたり約1メガバイトをサーバーに送ることを意味します。私は街にいて、私のLTEアップストリームはわずか2Mbpsです(そして、私は多くの人がずっと悪くなっています) –