java - Opencv and javafx used to access webcam but when I try to .release() the camera I receive errors -


i using javafx scenebuilder , opencv create system can access webcam. far have stop , start button. start button works fine , starts webcam feed me, when try stop feed pressing stop button, gives me following output:

# fatal error has been detected java runtime environment: # #  sigsegv (0xb) @ pc=0x00007fff917a70ee, pid=27307, tid=3335 # # jre version: java(tm) se runtime environment (8.0_91-b14) (build 1.8.0_91-b14) # java vm: java hotspot(tm) 64-bit server vm (25.91-b14 mixed mode bsd-amd64 compressed oops) # problematic frame: # c  [libobjc.a.dylib+0x80ee]  objc_release+0x1e #  # failed write core dump. core dumps have been disabled. enable core dumping, try "ulimit -c unlimited" before starting java again  # error report file more information saved as:  # ../documents/workspace2/v2cameraapp/hs_err_pid20232.log  # if submit bug report, please visit:  # http://bugreport.java.com/bugreport/crash.jsp  # crash happened outside java virtual machine in native code.  # see problematic frame report bug. 

the error report file contains beyond character limit, if there specific section of wish see please let me know. when use try stop camera in acquisition method

this.camera.release(); 

i error mentioned. idea how resolve this?

here controller class:

package application; import application.utilities;   import java.util.concurrent.executors; import java.util.concurrent.scheduledexecutorservice; import java.util.concurrent.timeunit;  import org.opencv.core.mat; import org.opencv.videoio.videocapture;  import javafx.event.actionevent; import javafx.fxml.fxml; import javafx.scene.control.button; import javafx.scene.control.combobox; import javafx.scene.image.image; import javafx.scene.image.imageview; import javafx.scene.layout.borderpane; import javafx.scene.layout.flowpane;  public class cameracontroller {//implements initializable { @fxml button startbtncamera;  @fxml button stopbtncamera;  @fxml combobox<webcaminfo> cbcameraoptions;  @fxml imageview cameraview;  @fxml borderpane borderpane;  @fxml flowpane fpbottompane;    //private bufferedimage grabbedimage;  // private boolean cameraactive;  // private videocapture camera;     private boolean cameraactive = false;;     private videocapture camera = new videocapture();     // timer acquiring video stream     private scheduledexecutorservice timer;   private class webcaminfo {     private string webcamname;       @override     public string tostring() {         return webcamname;     } }        protected void setimageviewsize() {      double height = borderpane.getheight();     double width = borderpane.getwidth();     cameraview.setfitheight(height);     cameraview.setfitwidth(width);     cameraview.prefheight(height);     cameraview.prefwidth(width);     cameraview.setpreserveratio(true);  }       @fxml private void startcamera(actionevent action) throws interruptedexception {     // set fixed width frame     this.cameraview.setfitwidth(900);     // preserve image ratio     this.cameraview.setpreserveratio(true);        system.out.println("hello, opencv");      if (!this.cameraactive){         thread.sleep(1000);         this.camera.open(0);          if(this.camera.isopened()) {             this.cameraactive = true;              // grab frame every 33 ms (30 frames/sec)             runnable framegrabber = new runnable() {                  @override                 public void run()                 {                     // grab , process single frame                     mat frame = new mat();                     camera.grab(); //frame grabbed                     camera.retrieve(frame); //frame decoded                     camera.read(frame); //if frame not empty process                     image imagetoshow = utilities.mat2image(frame);                     updateimageview(cameraview, imagetoshow);                 }             };              this.timer = executors.newsinglethreadscheduledexecutor();             this.timer.scheduleatfixedrate(framegrabber, 0, 33, timeunit.milliseconds);              startbtncamera.setdisable(true);             stopbtncamera.setdisable(false);         }         else {         system.out.println("not able open camera connection...");         }     }   }  @fxml private void stopcamera(actionevent event) {     if (this.camera.isopened()) {         this.stopacquisition();  //          if (!this.camera.isopened()) { //              this.cameraactive = false; //              startbtncamera.setdisable(false); //              stopbtncamera.setdisable(true); //          }     }   }  /**  * stop acquisition camera , release resources  */ private void stopacquisition() {     if (this.timer!=null && !this.timer.isshutdown())     {         try         {             // stop timer             this.timer.shutdown();             this.timer.awaittermination(33, timeunit.milliseconds);         }         catch (interruptedexception e)         {             // log exception             system.err.println("exception in stopping frame capture, trying release camera now... " + e);         }     }      if (this.camera.isopened())     {         // release camera         //this.camera.release();         camera.release();     } }    /**  * update {@link imageview} in javafx main thread  *  * @param view  *            {@link imageview} update  * @param image  *            {@link image} show  */ private void updateimageview(imageview view, image image) {     utilities.onfxthread(view.imageproperty(), image); }     /**  * on application close, stop acquisition camera  */ protected void setclosed() {     this.stopacquisition(); }  } 

my fxml class:

<?xml version="1.0" encoding="utf-8"?>  <?import javafx.scene.image.*?> <?import java.lang.*?> <?import javafx.collections.*?> <?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.layout.borderpane?> <?import javafx.scene.text.*?>  <!-- <?xml version="1.0" encoding="utf-8"?>  <?import javafx.scene.image.*?> <?import javafx.scene.media.*?> <?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.layout.anchorpane?>  <anchorpane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.cameracontroller">    <children>       <borderpane fx:id="borderpane" prefheight="425.0" prefwidth="538.0">          <center>             <imageview fx:id="cameraview" fitheight="150.0" fitwidth="200.0" pickonbounds="true" preserveratio="true" borderpane.alignment="center" />          </center>          <bottom>             <flowpane prefheight="82.0" prefwidth="538.0" borderpane.alignment="center">                <children>                   <button fx:id="stopbtncam" mnemonicparsing="false" text="stop">                      <flowpane.margin>                         <insets bottom="10.0" left="10.0" right="10.0" top="10.0" />                      </flowpane.margin>                   </button>                   <button fx:id="startbtncam" mnemonicparsing="false" text="start">                    <flowpane.margin>                         <insets bottom="10.0" left="10.0" right="10.0" top="10.0" />                      </flowpane.margin>                   </button>                 </children>             </flowpane>          </bottom>          <top>             <combobox fx:id="cbcameraoptions" prefwidth="150.0" prompttext="options" borderpane.alignment="center">                <borderpane.margin>                   <insets bottom="10.0" left="10.0" right="10.0" top="10.0" />                </borderpane.margin>             </combobox>          </top>       </borderpane>    </children> </anchorpane> -->  <borderpane prefheight="690.0" prefwidth="900.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.cameracontroller">     <bottom>         <flowpane fx:id="fpbottompane" alignment="center" columnhalignment="center" hgap="50.0" prefheight="80.0" prefwidth="200.0" style="-fx-background-color:#ccc;">             <children>                 <button fx:id="startbtncamera" minheight="-infinity" minwidth="-infinity" mnemonicparsing="false" onaction="#startcamera" prefheight="50.0" prefwidth="190.0" text="start camera">                     <font>                         <font name="segoe ui" size="18.0" fx:id="x1" />                     </font>                 </button>                 <button fx:id="stopbtncamera" font="$x1" minheight="-infinity" minwidth="-infinity" mnemonicparsing="false" onaction="#stopcamera" prefheight="50.0" prefwidth="190.0" text="stop camera" />             </children>         </flowpane>     </bottom>     <center>         <borderpane fx:id="borderpane" prefheight="200.0" prefwidth="200.0">         <center>             <imageview fx:id="cameraview" fitheight="150.0" fitwidth="200.0" pickonbounds="true" preserveratio="true" borderpane.alignment="center" />         </center>     </borderpane> </center> <top>     <gridpane minheight="-infinity" minwidth="-infinity" prefheight="120.0" style="-fx-background-color:#ccc;&#10;">         <children>             <label text="iris webcam capture" gridpane.columnindex="0" gridpane.columnspan="2" gridpane.halignment="center" gridpane.hgrow="always" gridpane.rowindex="0" gridpane.rowspan="1" gridpane.valignment="center" gridpane.vgrow="always">                 <font>                     <font name="segoe ui" size="34.0" />                 </font>                 <gridpane.margin>                     <insets top="10.0" />                 </gridpane.margin>             </label>             <label font="$x1" text="please select webcam" gridpane.columnindex="0" gridpane.halignment="right" gridpane.hgrow="always" gridpane.rowindex="1" gridpane.valignment="center" gridpane.vgrow="always">                 <gridpane.margin>                     <insets left="5.0" right="10.0" />                 </gridpane.margin>             </label>             <combobox fx:id="cbcameraoptions" prefheight="38.0" prefwidth="357.0" style="-fx-font-size: 18px;" gridpane.columnindex="1" gridpane.rowindex="1" />         </children>         <columnconstraints>             <columnconstraints hgrow="sometimes" maxwidth="795.0" minwidth="10.0" prefwidth="418.0" />             <columnconstraints hgrow="sometimes" maxwidth="502.0" minwidth="10.0" prefwidth="482.0" />         </columnconstraints>         <rowconstraints>             <rowconstraints minheight="10.0" prefheight="30.0" vgrow="sometimes" />             <rowconstraints minheight="10.0" prefheight="30.0" vgrow="sometimes" />         </rowconstraints>     </gridpane> </top> </borderpane> 

this main class:

public class main extends application {  @override public void start(stage primarystage) {      parent root = null;     try {         root = fxmlloader.load(getclass().getresource("/application/v2jfxcamera.fxml"));         //root = fxmlloader.load(main.class.getresource("v2jfxcamera.fxml"));     } catch (ioexception e) {         e.printstacktrace();     }      scene scene = new scene(root, 800, 600);      primarystage.settitle("iris recognition");     primarystage.setscene(scene);     primarystage.centeronscreen();     primarystage.show(); }  public static void main(string[] args) {     system.loadlibrary(core.native_library_name);     launch(args); } } 


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -