我遇到了这个头痛的问题,我似乎无法解决这个问题。我在做什么我有一台计算机连接起来的机器,当条件成立时它会拍照。但问题是它确实拍摄时有时候很奇怪,见下文。我尝试反转图片,但不是一切都落后了。我到处寻找......没有任何帮助我。我尝试了许多不同的示例代码,他们要么不工作,要么仍然有这个问题。
正常图片: http://imgur.com/ve4bp9M
奇怪的图片: http://imgur.com/5Z46oPzpublic Mat getCapture(){
if(camera==null || !camera.isOpened()){
camera = new VideoCapture(0);
setCameraValues();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Mat m = null;
if(!camera.isOpened()){
System.out.println("Error");
}
else {
m = new Mat();
while(true){
camera.read(m);
if (!m.empty()){
//Mat file is not empty
break;
}
}
}
camera.release();
return m;
}
以下是将相机的设置设置为焦距,变焦,亮度等。
public void setCameraValues()
{
this.camera.set(28, ((Integer)this.values.get(0)).intValue());
this.camera.set(27, ((Integer)this.values.get(1)).intValue());
this.camera.set(10, ((Integer)this.values.get(2)).intValue());
this.camera.set(11, ((Integer)this.values.get(3)).intValue());
this.camera.set(12, ((Integer)this.values.get(4)).intValue());
this.camera.set(15, ((Integer)this.values.get(5)).intValue());
this.camera.set(20, ((Integer)this.values.get(6)).intValue());
this.camera.set(33, ((Integer)this.values.get(7)).intValue());
this.camera.set(34, ((Integer)this.values.get(8)).intValue());
this.camera.set(3, ((Integer)this.values.get(9)).intValue());
this.camera.set(4, ((Integer)this.values.get(10)).intValue());
}
修改 我使用的网络摄像头是Microsoft LifeCam HD