java代码启动电脑相机_如何使用java启用电脑的摄像头摄相拍照

本文介绍了如何在Java中利用OpenCV库启动电脑相机并拍摄照片。首先,需要下载并解压OpenCV软件包,然后在项目中配置OpenCV库。通过创建和读取VideoCapture对象,可以从摄像头捕获帧并将其转换为BufferedImage,最后显示在ImageView中。示例代码运行时可能会遇到 UnsatisfiedLinkError,这通常是因为缺少OpenCV的本地库路径。
摘要由CSDN通过智能技术生成

在Java语言编程中,如何使用java启用电脑的摄像头摄相拍照?

注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2.0-0.html , 下载一个OpenCV软件包。这里下载最新版本:opencv-3.2.0-vc14.exe并解压此文件到D:\software\opencv目录中。

项目结构如下图所示 -

ddcaf2c75c28f0808fb306b1aa746e23.png

添加一个用户自定义库:OpenCV3.2,并指配置构建路径为:D:\software\opencv\opencv\build\java\x64,如下图所示 -

192d5d202c5bfbd6af3690cb9943617c.png

以下是使用Java从系统摄像头拍摄快照的程序 -

package com.yiibai;

import java.awt.image.BufferedImage;

import java.awt.image.DataBufferByte;

import java.awt.image.WritableRaster;

import java.io.FileNotFoundException;

import java.io.IOException;

import javafx.application.Application;

import javafx.embed.swing.SwingFXUtils;

import javafx.scene.Group;

import javafx.scene.Scene;

import javafx.scene.image.ImageView;

import javafx.scene.image.WritableImage;

import javafx.stage.Stage;

import org.opencv.core.Core;

import org.opencv.core.Mat;

import org.opencv.videoio.VideoCapture;

public class TakingSnapshotUsingCamera extends Application {

Mat matrix = null;

@Override

public void start(Stage stage) throws FileNotFoundException, IOException {

// Capturing the snapshot from the camera

TakingSnapshotUsingCamera obj = new TakingSnapshotUsingCamera();

WritableImage writableImage = obj.capureSnapShot();

// Setting the image view

ImageView imageView = new ImageView(writableImage);

// setting the fit height and width of the image view

imageView.setFitHeight(400);

imageView.setFitWidth(600);

// Setting the preserve ratio of the image view

imageView.setPreserveRatio(true);

// Creating a Group object

Group root = new Group(imageView);

// Creating a scene object

Scene scene = new Scene(root, 600, 400);

// Setting title to the Stage

stage.setTitle("启用摄向头照像");

// Adding scene to the satge

stage.setScene(scene);

// Displaying the contents of the stage

stage.show();

}

public WritableImage capureSnapShot() {

WritableImage WritableImage = null;

// Loading the OpenCV core library

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

// Instantiating the VideoCapture class (camera:: 0)

VideoCapture capture = new VideoCapture(0);

// Reading the next video frame from the camera

Mat matrix = new Mat();

capture.read(matrix);

// If camera is opened

if (capture.isOpened()) {

// If there is next video frame

if (capture.read(matrix)) {

// Creating BuffredImage from the matrix

BufferedImage image = new BufferedImage(matrix.width(), matrix.height(), BufferedImage.TYPE_3BYTE_BGR);

WritableRaster raster = image.getRaster();

DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer();

byte[] data = dataBuffer.getData();

matrix.get(0, 0, data);

this.matrix = matrix;

// Creating the Writable Image

WritableImage = SwingFXUtils.toFXImage(image, null);

}

}

return WritableImage;

}

public static void main(String args[]) {

launch(args);

}

}

在执行上面示例代码成功后,应该会看到如下输出 -

42e09929da1c0757fdac1e65c73afb86.png

问题

F:\worksp\javaexamples\java_opencv

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java320 in java.library.path

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

at com.yiibai.CopyAndPasteAnImage.main(CopyAndPasteAnImage.java:13)

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值