Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

copying smaller picture onto larger original frame

Hi! I'm trying to copy a smaller picture on to the larger frame. But i can't get it to work. It compiles fine but it does not show anything. My goal is to copy the recognised face onto the larger original frame.

//NEW
Mat face_resized;
//NEW
for(int i = 0; i < faces.size(); i++) {

    // Process face by face:
    Rect face_i = faces[i];
    // Crop the face from the image. So simple with OpenCV C++:
    Mat face = gray(face_i);

    // Resizing the face is necessary for Eigenfaces and Fisherfaces. You can easily
    // verify this, by reading through the face recognition tutorial coming with OpenCV.
    // Resizing IS NOT NEEDED for Local Binary Patterns Histograms, so preparing the
    // input data really depends on the algorithm used.
    //
    // I strongly encourage you to play around with the algorithms. See which work best
    // in your scenario, LBPH should always be a contender for robust face recognition.
    //
    // Since I am showing the Fisherfaces algorithm here, I also show how to resize the
    // face you have just found:
    //NEW
    face_resized=images[images.size()-1];
    //Mat face_resized=images[images.size()-1];
    //NEW

    cv::resize(face, face_resized, Size(im_width, im_height), 1.0, 1.0, INTER_CUBIC);
    //model->setLabelsInfo(labelsInfo);
    // Now perform the prediction, see how easy that is:
    int prediction = model->predict(face_resized);
    double confidence = 0.0;
    model->predict(face_resized,prediction,confidence);

    // And finally write all we've found out to the original image!
    // First of all draw a green rectangle around the detected face:
    rectangle(original, face_i, CV_RGB(0, 255,0), 1);

And:

//NEW
cv::Rect roi = cv::Rect(50,50, face_resized.cols, face_resized.rows);
cv::Mat subview = original(roi);
subview.copyTo(original);
//NEW
while(tmp!=0) {
putText(original, tmp->name, Point(10,y),FONT_HERSHEY_PLAIN,1.0,CV_RGB(100,100,0),1.0);
y+=10;
tmp=tmp->next;}
}

imshow("face_recognizer", original);

(i only copied the relevant parts, can post more if needed).

Appreciate the help.