Ich arbeite an einer opencv-Anwendung, die CPU stark verbraucht.wie Opencv Verarbeitung auf vielen Hosts verteilt
Ich möchte die Frame-Verarbeitung verteilt, so dass es unter vielen Hosts geteilt wird.
Die Idee ist die gleiche wie in http://cloudcv.org/ implementiert. Das Problem besteht jedoch darin, dass Sie Ihre Anfrage nur an den Server senden können, um die verteilte Bildverarbeitung zu testen.
Ich suche lange im Internet, und ich frage mich, ob ich opencv + Docker Swarm oder opencv + Apache Spark implementieren kann oder ob es eine andere Methode gibt, um es zu verteilen.
Mein Code verarbeitet Frames in opencv Menschen in ihnen zu erkennen, will ich es auf vielen Hosts Geschwindigkeit zu maximieren ausgeführt bekommen:
while(true)
{
webcam.read(image);
//human detection--------------------------------------
cv::Mat resized_image;
cv::resize(image, resized_image, Size(image.cols/2, image.rows/2), 0, 0, INTER_LINEAR);
vector<Rect> found, found_filtered;
// this line uses hog descriptor to detect
// people body pattern in the frmaes
// found is a vector of Rect that contains the
// found peoples.
// Rect is a struct (x, y, height, width)
hog.detectMultiScale(image, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);
size_t u, h;
// this loop just make sure that the found
// rectangles are not duplicated.
for (u = 0; u<found.size(); u++)
{
Rect r = found[u];
for (h = 0; h<found.size(); h++)
if (h != u && (r & found[h]) == r)
break;
if (h == found.size())
found_filtered.push_back(r);
}
// this loop is for drawing the rectangles on the frame
for (u = 0; u<found_filtered.size(); u++)
{
Rect r = found_filtered[u];
r.x += cvRound(r.width*0.1);
r.width = cvRound(r.width*0.8);
r.y += cvRound(r.height*0.07);
r.height = cvRound(r.height*0.8);
rectangle(showed_image, r.tl()*2, r.br()*2, Scalar(0, 255, 0), 3);
cout << '\a';
}
}
Wenn Ihr Algorithmus parallelisierbar ist, kann Apache Spark Ihnen wahrscheinlich eine Lösung anbieten. Die Frage, wie sie jetzt steht, ist für dieses Forum zu weit gefasst. Um Ihnen zu helfen, benötigen wir mehr Informationen über den Algorithmus als derzeit zur Verfügung gestellt. – maasg
@ maasg: danke. Ich möchte nur eine Anleitung dazu haben. Ich habe viel gesucht, aber ich habe die Methode nicht gefunden. – ProEns08
Wenn Sie die Schlüsselelemente Ihres process + code zu der Frage hinzufügen, könnte ich versuchen, es zu einem Funkenauftrag abzubilden, zumindest in einigen groben Zeilen. – maasg