背景:
我正在做一个关于活动识别的人工智能项目,要求我使用相机并且必须使用Java。它必须是内置摄像头,因为我没有摄像头。当我尝试使用JxCapture在Java中使用相机时,我会在底部附近列出下面列出的相同(谢天谢地不是那么神秘)错误。这个错误似乎暗示着Java,或者至少这个库和其他一些人无法拿起我的内置摄像头。我注意到这一点,因为JMF也有一个类似的问题,它无法检测到相机。
import com.teamdev.jxcapture.Codec;
import com.teamdev.jxcapture.EncodingParameters;
import com.teamdev.jxcapture.VideoCapture;
import com.teamdev.jxcapture.video.VideoFormat;
import com.teamdev.jxcapture.video.VideoSource;
import java.io.File;
import java.util.List;
/*
* This example demonstrates the video capture from web camera.
* <pre>
* Platforms:
* Image source: WebCamera
* Output video format:
* Output file:
*
* @author Serge Piletsky
*/
public class TemplateRun
{
public static void main(String[] args) throws Exception
{
VideoCapture videoCapture = VideoCapture.create(VideoFormat.WMV);
// This is where things go south.
Thread.sleep(1000);
....
}
}
研究:
我已就此问题进行了公平的研究。有些人建议使用Windows操作系统,屏幕录制照相亭或正面运行等等,但实际上没有人真正回答过这个问题。我还没有尝试过OpenCV / JavaCV,因为我不想浪费另外一些时间来解决同样的问题。代码也编译和运行(错误除外),甚至能够获取变量,因此库本身就可以正常工作。这是Java / OSX中某些框架的问题吗?有办法解决这个问题吗?有一个很好的现代工作吗?
482 [main] ERROR com.teamdev.jxcapture.VideoCapture - No compatible video capture modules found for running operating system.
availableVideoSources = [LionVideoDevice[Name='FaceTime HD Camera (Built-in)'; Enabled=false]]
webCamera = LionVideoDevice[Name='FaceTime HD Camera (Built-in)'; Enabled=false]
Exception in thread "main" java.lang.NullPointerException
at TemplateRun.main(TemplateRun.java:34)
设备:
相机:V5.16 FaceTime高清摄像头(内置)。
电脑:Macbook pro 2012年中期
OS:MAC OS Sierra 10.12.3
Java版:Java 8更新,121
经过测试,看起来OpenCV / JavaCV似乎无法从内置摄像头获取摄像头。
答案 0 :(得分:0)
您正尝试使用VideoFormat.WMV
视频格式初始化VideoCapture videoCapture = VideoCapture.create(VideoFormat.MP4);
课程的实例。
JxCapture在MacOS上不支持这种格式。您必须改为使用VideoFormat.MP4:
VideoCapture
或使用默认构造函数创建VideoCapture videoCapture = VideoCapture.create();
的实例:
NSString *foo = @"bar"; // foo is a reference to a string object
doSomething( foo ); // a reference is passed