java - OpenCV 中相机捕获的图像为全黑

标签 java opencv

我是 OpenCV - Java 的初学者,尝试通过从笔记本电脑中的相机捕获图像来学习基础知识。我在eclipse中运行以下代码,可以看到相机灯闪烁一秒钟,表明它确实启动了。但存储的图像是全黑的。

import org.opencv.core.*;
import org.opencv.videoio.VideoCapture;
import org.opencv.imgcodecs.*;

public class VideoCap {


    public static void main(String[] args){

        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        VideoCapture camera = new VideoCapture(0);
        if(!camera.isOpened()) {
                    System.out.println("Erro in opening camera");
        }

        else {
            Mat frame = new Mat();
            while(true) {
                if(camera.read(frame)) {
                    System.out.println("Camera obtained");
                    System.out.println("Captured frame width" + frame.width()
                    + " catured frame height " + frame.height() );
                    Imgcodecs.imwrite("cam.jpg", frame);
                    break;                  
                }
            }
        }
        camera.release();
    }
}

控制台上没有错误,可能出了什么问题?

最佳答案

您必须像这样更改代码:

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;        
import org.opencv.videoio.VideoCapture;        

public class VideoCap {
    public static void main (String args[]){
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        VideoCapture camera = new VideoCapture(0);

        System.out.println("Welcome to OpenCV " + Core.VERSION);
        if(!camera.isOpened()){
            System.out.println("Error");
        }
        else {
            Mat frame = new Mat();
            camera.read(frame); 
            while(true){
                if (camera.read(frame)){
                    System.out.println("Frame Obtained");
                    System.out.println("Captured Frame Width " + 
                    frame.width() + " Height " + frame.height());
                    Imgcodecs.imwrite("c://capture/camera.jpg", frame);
                    System.out.println("OK");
                    break;
                }
            }   
        }
        camera.release();
    }
}  

关于java - OpenCV 中相机捕获的图像为全黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36995461/

相关文章:

java - stdin、stdout、stderr 如何关闭

c++ - 使用 opencv 增加图像比例并最大化分辨率?

java - 如何使用 selenium webdriver 向下滚动具有分页的页面的特定 div

java - 两个 TableView 的同步滚动条不适用于空表

OpenCV cvtColor CV_BGR2HSV CV_32FC3 饱和度范围

opencv - 如何降低图像的光强度

android - 错误 : Program "/ndk-build.cmd" is not found in PATH

opencv - 少量样本的人脸识别

java - Java 应用程序将文本文件写入磁盘时可能会丢失数据

Java数据事务性能