Ask Your Question

Revision history [back]

How to extract a specific sized Matrix from VideoDevice

I have trained the FaceRecognizer all the images are of same size and passed the grayscale image to the predictor. But i face this error

OpenCV Error: Bad argument (Wrong shapes for given matrices. Was size(src) = (1,150544), size(W) = (37636,5).) in subspaceProject, file /home/**/opencv/modules/core/src/lda.cpp, line 182

Here is the code

if (videoDevice.isOpened()) {
            while (true) {      
                Mat frameCapture = new Mat();
                videoDevice.read(frameCapture);
                MatOfRect faces = new MatOfRect();
                cascadeFaceClassifier.detectMultiScale(frameCapture, faces, 2.0, 5, 0,new Size(),new Size());


                for (Rect rect : faces.toArray()) {
                    Mat resizedCapture = new Mat(frameCapture,rect);
                    Imgproc.cvtColor(resizedCapture, resizedCapture, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
                    Size imageSize = new Size(194,194);
                    Imgproc.resize(resizedCapture,resizedCapture , imageSize);

                    System.out.println(images.get(0).rows());
                    System.out.println(resizedCapture.rows());
                    System.out.println(images.get(0).cols());
                    System.out.println(resizedCapture.cols());
                    try{
                        x = faceRecognizer.predict_label(resizedCapture);
                    }catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                    x++;
                    Imgproc.putText(frameCapture, "Face"+x, new Point(rect.x,rect.y-5), 1, 2, new Scalar(0,0,255));
                    Imgproc.rectangle(frameCapture, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),new Scalar(0, 100, 0),3);
                }



                PushImage(ConvertMat2Image(frameCapture));
                //System.out.println(String.format("FACES = %s EYES =  %s detected.", faces.toArray().length,eyes.toArray().length,nose.toArray().length));
            }