2017-10-21 43 views
0

Cette erreur apparaît lorsque je clique sur le bouton Capturer.Erreur JavaCV lors de l'enregistrement d'une image capturée

OpenCV Error: Unspecified error (could not find a writer for the specified extension) in cv::imwrite_, file C:\build\2_4_winpack-bindings-win64-vc14-static\opencv\modules\highgui\src\loadsave.cpp, line 275 Exception in thread "AWT-EventQueue-0" CvException [org.opencv.core.CvException: cv::Exception: C:\build\2_4_winpack-bindings-win64-vc14-static\opencv\modules\highgui\src\loadsave.cpp:275: error: (-2) could not find a writer for the specified extension in function cv::imwrite_ ]

Ceci est le code de mon bouton de capture.

if (evt.getSource() == btnCapture) { 
    webSource = new VideoCapture(0); 
    myThread = new DaemonThread(); 
    Thread t = new Thread(myThread); 
      t.setDaemon(true); 
      myThread.runnable = true; 
      t.start(); 

     } 

myThread.runnable = false; 
      webSource.release(); 



        JFileChooser jFileChooser1 = new JFileChooser("./images"); 
       int returnVal = jFileChooser1.showSaveDialog(this); 

       if(returnVal == JFileChooser.APPROVE_OPTION){ 
        File file = jFileChooser1.getSelectedFile().getAbsoluteFile(); 
        String path = jFileChooser1.getSelectedFile().getAbsolutePath(); 
         f = new File(file.toURI()); 
        Highgui.imwrite(file.getPath(), frame); 
       } 

       FileInputStream fis; 
    try { 
     fis = new FileInputStream(f); 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
       byte[] buf = new byte[1024]; 
       for(int readNum; (readNum = fis.read(buf)) != -1;){ 
        bos.write(buf, 0, readNum); 
    } 
byte[] convict_image = bos.toByteArray(); 
    }catch (FileNotFoundException ex) { 
     Logger.getLogger(cam.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(cam.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

Quelle est la logique dans votre code, dans la première fois que vous avez créé VideoCapture et que vous l'avez immédiatement publié? Et aussi dans la ligne 'Highgui.imwrite (file.getPath(), frame);' où et comment avez-vous capturé le cadre? Et si les problèmes ... –

+0

// btnPause événement d'action (myThread.runnable = false; btnOpen.setEnabled (false); btnCapture.setEnabled (true); webSource.release();) –

+0

// btnOpen action event {webSource = nouvelle VideoCapture (0); myThread = new DaemonThread(); Thread t = nouveau Thread (myThread); t.setDaemon (true); myThread.runnable = true; t.start(); btnCapture.setEnabled (false); btnOpen.setEnabled (true); } –

Répondre

0

Lorsque vous écrivez une image en utilisant imwrite vous devez spécifier l'extension, il suffit de faire quelque chose comme ceci:

Highgui.imwrite(file.getPath()+"\\image.jpg", frame); 

Ici, le .jpg est l'extension.

+0

cette erreur se produit lorsque je cours le code. {java.io.FileNotFoundException: C: \ Utilisateurs \ Kurt \ Desktop \ asd (Le système ne trouve pas le fichier spécifié)} –

+0

Hi! Cette erreur n'appartient pas à OpenCV, vous pouvez donc vérifier le chemin donné OK. –