OpenCV拍摄奇怪的图片 - Java

时间:2014-07-03 15:37:15

标签: java opencv

我遇到了这个头痛的问题,我似乎无法解决这个问题。我在做什么我有一台计算机连接起来的机器,当条件成立时它会拍照。但问题是它确实拍摄时有时候很奇怪,见下文。我尝试反转图片,但不是一切都落后了。我到处寻找......没有任何帮助我。我尝试了许多不同的示例代码,他们要么不工作,要么仍然有这个问题。

正常图片: http://imgur.com/ve4bp9M

奇怪的图片: http://imgur.com/5Z46oPz

public 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

0 个答案:

没有答案