我有一个使用OpenCV使用网络摄像头拍照的程序。它就像在Windows上的魅力一样,但它在OSx上不起作用。应显示Webcam视图的框架保持空白。当我拍照时,它只显示一个黑色的空白,好像它找不到摄像头一样
public void run(){
try {
grabber = new VideoInputFrameGrabber(0);
grabber.start();
while (active) {
IplImage originalImage = grabber.grab();
Label.setIcon(new ImageIcon( originalImage.getBufferedImage() ));
}
grabber.stop();
grabber.flush();
} catch (Exception ex) {
//Logger.getLogger(ChPanel.class.getName()).log(Leve l.SEVERE, null, ex);
}
}
public BufferedImage saveImage(){
IplImage img;
try {
//capture image
img = grabber.grab();
// save to file
File outputfile = new File(Project.getInstance().getFileURLStr() + " capture" + fotoCount++ + ".jpg");
ImageIO.write(img.getBufferedImage(), "jpg", outputfile);
//get file and set it in the project library
BufferedImage ImportFile = ImageIO.read(outputfile);
Project p = Project.getInstance();
MainScreen ms = MainScreen.getInstance();
ImageIcon takenPhoto = new ImageIcon(ImportFile);
p.setNextImage(takenPhoto);
ms.setPanels();
return ImportFile;
} catch (com.googlecode.javacv.FrameGrabber.Exception e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
有谁知道如何解决这个问题?我怀疑有关使用网络摄像头的权利或类似的东西
答案 0 :(得分:1)
grabber = new VideoInputFrameGrabber(0);
此处为0
Capture device number 0
可能是第0个设备无法用于视频捕获
使用此代码分别获取设备和编号列表。
import com.googlecode.javacv.cpp.videoInputLib.videoInput;
class Main {
public static void main(String[] args) {
int n=videoInput.listDevices();
for(int i=0;i<n;i++)
{
System.out.println(i+" = "+videoInput.getDeviceName(i));
}
}
}
然后指定该设备的编号
grabber = new VideoInputFrameGrabber(1); // 0 or 1 or 2
答案 1 :(得分:0)
要与网络摄像头互动,我使用此库webcam-capture,您可以轻松地使用maven添加openCV依赖项。这是一个很棒的图书馆