【发布时间】:2016-02-15 14:34:02
【问题描述】:
我用 intellij IDEA 正确设置了 OpenCV 3.0.0,但是在编译我的代码时仍然出现错误。我正在尝试将它与嵌入在 Javafx 中的 swing 一起使用。
程序运行,但 OpenCv 似乎无法运行,因为网络摄像头未打开,并且日志错误似乎与 opencv 相关
这是我的代码。
private void createFrameContent(SwingNode swingNode){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JPanel frame=new JPanel();
swingNode.setContent(frame);
JLabel label=new JLabel();
frame.add(label);
ImageProcessor imageProcessor=new ImageProcessor();
Mat webCamImageMat=new Mat();
Image tempImage;
VideoCapture capture=new VideoCapture(0);
capture.set(Videoio.CAP_PROP_FRAME_WIDTH,320);
capture.set(Videoio.CAP_PROP_FRAME_HEIGHT,240);
if(capture.isOpened()){
while (true){
capture.read(webCamImageMat);
if(!webCamImageMat.empty()){
tempImage=imageProcessor.toBufferedImage(webCamImageMat);
ImageIcon imageIcon=new ImageIcon(tempImage,"");
label.setIcon(imageIcon);
}else{
System.out.println("not Captured...");
break;
}
}
}else{
System.out.println("Capture failed !");
}
}
});
}
这些是日志错误
Exception in thread "AWT-EventQueue-0" java.security.PrivilegedActionException: java.lang.Exception: unknown exception
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.Exception: unknown exception
at org.opencv.videoio.VideoCapture.VideoCapture_2(Native Method)
at org.opencv.videoio.VideoCapture.<init>(VideoCapture.java:54)
at sample.Main$WindowPane$1.run(Main.java:68)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
... 9 more
我也添加了
static{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
【问题讨论】:
-
信息不足。你认为任何人都可以从堆栈跟踪中的行号中做出一些事情吗?请提供MCVE。您是否尝试过使用普通的 JavaFX,然后它可以工作吗?
-
@Roland 我只是更改并使用 javafx,而不是使用 javafx 和 swing 的混合,我会尽快发布我所做的