Java和OpenCV的一些问题

时间:2018-07-05 17:26:28

标签: java opencv webcam mat

对不起,我的英语不好

我正在尝试使用Windows Builder和opencv做一个GUI,该GUI打开摄像头并使用一个按钮,我可以拍摄一张照片,并使用filechooser将其保存在导演中,然后当我按下按钮Lapacian或Sobel时,它将应用过滤它,我在youtube上接受了一些代码,但是我不知道为什么我要更改函数highgui.imread中的目录,仅当我将图片另存为lena_color.jpg才可以打开图片。 是否有解决方案,可以将图片自动保存到默认文件夹中,然后按一下该按钮,在该文件夹上应用滤镜?

这是代码:

“按钮:打开网络摄像头”

public void actionPerformed(ActionEvent e) {
                 webSource =new VideoCapture(0);
                  myThread = new DaemonThread();
                            Thread t = new Thread(myThread);
                            t.setDaemon(true);
                            myThread.runnable = true;
                            t.start();
                             btnStart.setEnabled(false);  //start button
                            btnPause.setEnabled(true);  // stop button

“按钮:拍照”

int returnVal = fileChooser.showSaveDialog(frame);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                Highgui.imwrite(file.getPath(), frame1);

“按钮:拉普拉斯语”

//Mat mat = Imgcodecs.imread("bin\\images\\test.jpg");
                Mat mat = Highgui.imread("bin\\images\\lena_color.jpg");
                imshow("Foto normale", mat);

                //CALCULATE LAPLACIAN
                Mat mat2 = new Mat(mat.rows(), mat.cols(), CvType.CV_8UC1);
                Mat kernel_laplacian = new Mat(3,3, CvType.CV_32F){
                       {
                            put(0,0,0);
                            put(0,1,-1);
                            put(0,2,0);

                            put(1,0-1);
                            put(1,1,4);
                            put(1,2,-1);

                            put(2,0,0);
                            put(2,1,-1);
                            put(2,2,0);
                       }
                    };

                    Imgproc.filter2D(mat, mat2, -1, kernel_laplacian);
                    imshow("Filtro (Laplacian)", mat2);

谢谢!

0 个答案:

没有答案