Ask Your Question

jwcrawley's profile - activity

2015-06-30 16:20:42 -0600 asked a question faceRecognizer; cannot ->set() threshold after constructed

I am trying to create a LBPH face detector and after it's created, adjust the threshold as a form of back-propagation. My problem is there does not seem to be a method in order to set the threshold after it is created. My code, as follows

    double lbphThreshold = 0.0; // This WILL change, look further below
Ptr<FaceRecognizer> model = createLBPHFaceRecognizer(1,8,8,8, lbphThreshold);

//snipped for brevity

    while (predicted == -1){
    lbphThreshold = lbphThreshold + 1.0;
    model->set("threshold", lbphThreshold);
    predicted =  model->predict(image);
    }

Eclipse reports the error as

error: ‘class cv::face::FaceRecognizer’ has no member named ‘set’
model->set("threshold", lbphThreshold);

http://docs.opencv.org/modules/contri... Indicates that ->set is indeed a valid call for the object 'model'. I also tested out trying a

model->getDouble("threshold")

It too fails to be recognized as a call to model.

I've also tried model.set("threshold", lbphThreshold) which also does not work. However, the model->predict(image) does highlight as good code and no errors happen here.

I am using Eclipse in Linux, which I believe is set up correctly (can use other FaceRecognizer functions as normal). Using self-compiled OpenCV 3.0.0 with current Contrib.

Any ideas what's going on?

2015-03-03 06:58:35 -0600 asked a question Generate face data from XML data of LBPHFaceRecognizer

I'm currently doing a project that finds and classifies peoples' faces. Ideally, we're doing this for a hacker convention MakeVention. We're needing a way to count how many unique people show up.

My code is here. I don't save any face images, other than the seed data for the classifier. The seed data is a bunch of pics of me.

The question here is, given the XML save:

model->save(face_file);

Can I take this data and generate grayscale images from this data that accurately reproduce this face? Or, is this data a one-way hash?

2015-03-03 06:51:08 -0600 commented answer Maximum distance a face can be detected (from camera)?

That is true. However the LBP does tend to give false positives. Since it does, you can run the faces directly through the Haar cascade that detects eyes. That is really quick. And then, if you don't detect eyes for a given face, you can throw the face out.

My way was a compromise of getting the speed of the face LBP, and the accuracy of the face Haar cascade. It's a bit more complicated, but does work.

2015-02-27 09:55:11 -0600 commented answer Maximum distance a face can be detected (from camera)?

I converted my response to you to an answer.

The gist: pay more CPU time to reduce false positives, by using an eye detection routine on 'possible' faces. This would allow smaller images to pass through and successfully be detected.

2015-02-27 09:50:51 -0600 commented answer Maximum distance a face can be detected (from camera)?

It's what I'm currently doing with a project now. Your goal is to find the smallest size of an image that a face can be detected from. You've trained an LBP to detect faces, but are receiving false positives.

You can constrain the positives by using another cascade to detect for eyes. For example, you find 5 faces in an image 1024x768. 4 are real people, while one is the cascade giving a false positive (on a wall or something).

By using the eye-detection cascade, you can feed the detected faces into the eye detector. Do this with the image(cv::Rect eyes), where image is where the webcam image is stored. If then, you watch for the size of the vector<cv::rect> where the eyes are stored, you can tell if it's successful or not. If it's a null vector, it's probably ... (more)

2015-02-27 06:33:33 -0600 answered a question Maximum distance a face can be detected (from camera)?

If you think the face classifier is giving false positives, you can always load up the eye detection cascade and give the ROI of the face to the eye cascade. A null output means to ignore the face.

2013-10-25 04:42:58 -0600 received badge  Nice Answer (source)
2013-10-24 04:09:33 -0600 received badge  Teacher (source)
2013-10-23 22:17:57 -0600 answered a question license plate recognition ObjectiveC OpenCV and Tesseract

I'm still very new to programming in OpenCV, so take this with a grain (kilogram) of salt.

The dimensions, according to a non-authoratative source, is 12 in X 6 in. This is the real size, but it gives us an accurate model in which to work with.

Now, our camera (in your case, an iPhone) is simply a directional point camera with a rectangular cone field of view. From an arbitrary point, the 12x6 rectangle will look like a parallelogram. So what we ideally want is to make a matching parallelogram over the boundary of the license plate, and then map the parallelogram to the appropriate rectangle. Then we can OCR this intermediary image and output the appropriate letters and numbers.

  1. Capture picture.
  2. Best-fit a parallellogram over the mostly solid color boundary to find the license plate.
  3. Map the parallelogram to the 12x6 license plate
  4. OCR corrected plate picture.