minor improvements
authorAndrey Pavlenko <andrey.pavlenko@itseez.com>
Fri, 6 Dec 2013 10:49:36 +0000 (14:49 +0400)
committerAndrey Pavlenko <andrey.pavlenko@itseez.com>
Fri, 6 Dec 2013 10:49:36 +0000 (14:49 +0400)
samples/ocl/facedetect.cpp

index 78a0775..fbb08cb 100644 (file)
@@ -190,18 +190,21 @@ static void detectFaces(std::string fileName)
     cascade.detectMultiScale(d_img, oclfaces,  1.1, 3, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30), Size(0, 0));
 
     for(unsigned int i = 0; i<oclfaces.size(); i++)
-        rectangle(img, Point(oclfaces[i].x, oclfaces[i].y), Point(oclfaces[i].x + oclfaces[i].width, oclfaces[i].y + oclfaces[i].height), Scalar( 0, 255, 255 ), 3);
+        rectangle(img, Point(oclfaces[i].x, oclfaces[i].y), Point(oclfaces[i].x + oclfaces[i].width, oclfaces[i].y + oclfaces[i].height), colors[i%8], 3);
 
-    int n = (int)outputName.length();
-    while( n > 0 && outputName[n-1] != '.')
-        n--;
-    if( n == 0 )
+    std::string::size_type pos = outputName.rfind('.');
+    std::string outputNameTid = outputName + '-' + std::to_string(_threadid);
+    if(pos == std::string::npos)
     {
         std::cout << "Invalid output file name: " << outputName << std::endl;
-        return;
     }
-
-    imwrite(outputName.substr(0,n-1) + "_" + std::to_string(_threadid) + outputName.substr(n-1, outputName.length()-1), img);
+    else
+    {
+        outputNameTid = outputName.substr(0, pos) + "_" + std::to_string(_threadid) + outputName.substr(pos);
+        imwrite(outputNameTid, img);
+    }
+    imshow(outputNameTid, img);
+    waitKey(0);
 }
 
 static void facedetect_multithreading(int nthreads)
@@ -212,8 +215,6 @@ static void facedetect_multithreading(int nthreads)
         threads.push_back(std::thread(detectFaces, inputName));
     for(int i = 0; i<thread_number; i++)
         threads[i].join();
-    for(int i = 0; i<thread_number; i++)
-        threads[i].~thread();
 }
 #endif