精华内容
下载资源
问答
  • JAVA读取摄像头(JMF)

    热门讨论 2012-10-23 15:45:20
    JAVA读取摄像头(JMF)成功 保存图像,拍照完成后显示照片的组件,可以拖动范围框,选择要截取的部分 关闭摄像头
  • opencv在读取摄像头并显示图像时,无法有效关闭窗口? **//判断是否点击窗口关闭按键 窗口关闭返回 -1 if (cv::getWindowProperty("测试", 0) == -1){ cv::destroyAllWindows(); video....

    opencv在读取摄像头并显示图像时,无法有效关闭窗口?

    **//判断是否点击窗口关闭按键		窗口关闭返回 -1
    		if (cv::getWindowProperty("测试", 0) == -1){
    			cv::destroyAllWindows();
    			video.release();
    			break;
    		}**
    

    1、关键函数 getWindowProperty 判断窗口是否关闭 ,关闭则函数返回 -1

    展开全文
  • java摄像头读取二维码(整个java项目)

    热门讨论 2012-10-09 10:04:11
    资源为java摄像头读取二维码的整个java项目打包。 解压导入Eclipse并配置好后直接运行CameraFrame类即可。 内附test.png二维码图片,打印到白纸上即可测试。
  • 一、系统环境介绍 ...摄像头: 罗技USB摄像头 FFMPEG版本: 4.2.2 NDK版本: R19C QT版本: 5.12 二、QT代码 关于FFMPEG库的编译、QT的环境搭建等问题,可以看上篇文章。 直接上核心代码: #include "main...

    一、系统环境介绍

    PC环境: ubuntu18.04

    Android版本: 8.1

    Android设备: 友善之臂 RK3399 开发板

    摄像头:  罗技USB摄像头

    FFMPEG版本: 4.2.2

    NDK版本: R19C

    QT版本:  5.12

    二、QT代码

    关于FFMPEG库的编译、QT的环境搭建等问题,可以看上篇文章。

    直接上核心代码: 

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QProcess>
    #include <QDebug>
    
    /*
     * 设置QT界面的样式
    */
    void MainWindow::SetStyle(const QString &qssFile)
    {
        QFile file(qssFile);
        if (file.open(QFile::ReadOnly)) {
            QString qss = QLatin1String(file.readAll());
            qApp->setStyleSheet(qss);
            QString PaletteColor = qss.mid(20,7);
            qApp->setPalette(QPalette(QColor(PaletteColor)));
            file.close();
        }
        else
        {
            qApp->setStyleSheet("");
        }
    }
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        this->SetStyle(":/images/blue.css" );        //设置样式表
        this->setWindowIcon(QIcon(":/images/log.ico")); //设置图标
        this->setWindowTitle("FFMPEG测试DEMO");
        RefreshCameraList(); //刷新摄像头列表
    }
    
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::get_ffmpeg_version_info()
    {
        QProcess process;
        process.start("pwd");
        process.waitForFinished();
        QByteArray output = process.readAllStandardOutput();
        QString str_output = output;
        ui->plainTextEdit_FFMPEG_info_Display->insertPlainText("当前APP的工作路径:"+str_output);
        ui->plainTextEdit_FFMPEG_info_Display->insertPlainText(tr("FFMPEG的版本号:%1\n").arg(av_version_info()));
        av_register_all();
        AVCodec *c_temp = av_codec_next(nullptr);
        QString info="FFMPEG支持的解码器:\n";
        while (c_temp != nullptr)
        {
            if (c_temp->decode != nullptr)
            {
                info+="[Decode]";
            }
            else
            {
                info+="[Encode]";
            }
            switch (c_temp->type)
            {
            case AVMEDIA_TYPE_VIDEO:
                info+="[Video]";
                break;
            case AVMEDIA_TYPE_AUDIO:
                info+="[Audeo]";
                break;
            default:
                info+="[Other]";
                break;
            }
            info+=c_temp->name;
            info+=tr(" ID=%1").arg(c_temp->id);
            info+="\n";
            c_temp = c_temp->next;
        }
        ui->plainTextEdit_FFMPEG_info_Display->insertPlainText(info);
    }
    
    int MainWindow::FFMPEG_Init_Config(const char *video,const char *size)
    {
        AVInputFormat   *ifmt;
        AVFormatContext *pFormatCtx;
        AVCodecContext  *pCodecCtx;
        AVCodec         *pCodec;
        AVDictionary    *options=nullptr;
        AVPacket        *packet;
        AVFrame         *pFrame,*pFrameYUV;
    
        int videoindex;
        int i,ret,got_picture;
        /*1. FFMPEG初始化*/
        av_register_all();
        avcodec_register_all();
        avdevice_register_all(); //注册多媒体设备交互的类库
        /*2. 查找用于输入的设备*/
        ifmt=av_find_input_format("video4linux2");
        pFormatCtx=avformat_alloc_context();
        av_dict_set(&options,"video_size",size,0); //设置摄像头输出的分辨率
        //av_dict_set(&options,"framerate","30",0);     //设置摄像头帧率. 每秒为单位,这里设置每秒30帧.
        //一般帧率不用设置,默认为最高,帧率和输出的图像尺寸有关系
        if(avformat_open_input(&pFormatCtx,video,ifmt,&options)!=0)
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText(tr("输入设备打开失败: %1\n")
                                                                 .arg(video));
            return -1;
        }
        if(avformat_find_stream_info(pFormatCtx,nullptr)<0)
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText("查找输入流失败.\n");
            return -2;
        }
        videoindex=-1;
        for(i=0;i<pFormatCtx->nb_streams;i++)
        {
            if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
            {
                videoindex=i;
                break;
            }
        }
    
        if(videoindex==-1)
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText("视频流查找失败.\n");
            return -3;
        }
        pCodecCtx=pFormatCtx->streams[videoindex]->codec;
        ui->plainTextEdit_CameraOpenInfo->insertPlainText(tr("摄像头尺寸(WxH): %1 x %2 \n").arg(pCodecCtx->width).arg(pCodecCtx->height));
        ui->plainTextEdit_CameraOpenInfo->insertPlainText(tr("codec_id=%1").arg(pCodecCtx->codec_id));
        pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
        if(pCodec==nullptr)
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText("找不到编解码器.\n");
            return -4;
        }
        if(avcodec_open2(pCodecCtx, pCodec,nullptr)<0)
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText("无法打开编解码器.\n");
            return -5;
        }
    
        packet=(AVPacket *)av_malloc(sizeof(AVPacket));
        pFrame=av_frame_alloc();
        pFrameYUV=av_frame_alloc();
        unsigned char *out_buffer=(unsigned char *)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height,16));   // avpicture_get_size
    
        av_image_fill_arrays(pFrameYUV->data,pFrameYUV->linesize,out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height,16);
    
        struct SwsContext *img_convert_ctx;
        img_convert_ctx=sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height, AV_PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
    
        //读取一帧数据
        if(av_read_frame(pFormatCtx, packet)>=0)
        {
            //输出图像的大小
            ui->plainTextEdit_CameraOpenInfo->insertPlainText(tr("数据大小=%1\n").arg(packet->size));
            //判断是否是视频流
            if(packet->stream_index==videoindex)
            {
                //解码从摄像头获取的数据,pframe结构
                ret=avcodec_decode_video2(pCodecCtx, pFrame,&got_picture,packet);
                if(ret<0)
                {
                    ui->plainTextEdit_CameraOpenInfo->insertPlainText("解码Error.\n");
                    return -6;
                }
                else
                {
                    if(got_picture)
                    {
                         size_t y_size=pCodecCtx->width*pCodecCtx->height;
                         sws_scale(img_convert_ctx,(const unsigned char* const*)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameYUV->data, pFrameYUV->linesize);  //根据前面配置的缩放参数,进行图像格式转换以及缩放等操作
    
                         unsigned char *p=new unsigned char[y_size]; //申请空间
                         unsigned char *rgb24_p=new unsigned char[pCodecCtx->width*pCodecCtx->height*3];
    
                         //将YUV数据拷贝到缓冲区
                         memcpy(p,pFrameYUV->data[0],y_size);
                         memcpy(p+y_size,pFrameYUV->data[1],y_size/4);
                         memcpy(p+y_size+y_size/4,pFrameYUV->data[2],y_size/4);
                         //将YUV数据转为RGB格式plainTextEdit_FFMPEG_info_Display
                         YUV420P_to_RGB24(p,rgb24_p,pCodecCtx->width,pCodecCtx->height);
                         //加载到QIMAGE显示到QT控件
                         QImage image(rgb24_p,pCodecCtx->width,pCodecCtx->height,QImage::Format_RGB888);
                         QPixmap my_pixmap;
                         my_pixmap.convertFromImage(image);
                         ui->label_ImageDisplay->setPixmap(my_pixmap);
    
                         delete[] p; //释放空间
                         delete[] rgb24_p; //释放空间
                    }
                }
            }
        }
        avcodec_close(pCodecCtx); //关闭编码器
        avformat_close_input(&pFormatCtx); //关闭输入设备
        sws_freeContext(img_convert_ctx);
        av_free(out_buffer);
        av_free(pFrameYUV);
        return 0;
    }
    
    /**
     * YUV420P转RGB24
     * @param data
     * @param rgb
     * @param width
     * @param height
     */
    void MainWindow::YUV420P_to_RGB24(unsigned char *data, unsigned char *rgb, int width, int height)
    {
        int index = 0;
        unsigned char *ybase = data;
        unsigned char *ubase = &data[width * height];
        unsigned char *vbase = &data[width * height * 5 / 4];
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                //YYYYYYYYUUVV
                u_char Y = ybase[x + y * width];
                u_char U = ubase[y / 2 * width / 2 + (x / 2)];
                u_char V = vbase[y / 2 * width / 2 + (x / 2)];
                rgb[index++] = Y + 1.402 * (V - 128); //R
                rgb[index++] = Y - 0.34413 * (U - 128) - 0.71414 * (V - 128); //G
                rgb[index++] = Y + 1.772 * (U - 128); //B
            }
        }
    }
    
    void MainWindow::on_pushButton_up_camear_clicked()
    {
        if(ui->comboBox_camera_number->currentText().isEmpty())
        {
            ui->plainTextEdit_CameraOpenInfo->insertPlainText("未选择摄像头.\n");
            return;
        }
        FFMPEG_Init_Config(ui->comboBox_camera_number->currentText().toLatin1().data(),
                           ui->comboBox_CamearSize->currentText().toLatin1().data());
    }
    
    void MainWindow::on_pushButton_getInfo_clicked()
    {
        get_ffmpeg_version_info();
    }
    
    void MainWindow::on_pushButton_RefreshCamear_clicked()
    {
        RefreshCameraList();
    }
    
    //刷新摄像头;列表
    void MainWindow::RefreshCameraList(void)
    {
        QDir dir("/dev"); //构造目录
        QStringList infolist = dir.entryList(QDir::System);
        ui->comboBox_camera_number->clear();
        for(int i=0; i<infolist.size(); i++)
        {
            if(infolist.at(i).contains("video",Qt::CaseInsensitive))
            {
                ui->comboBox_camera_number->addItem("/dev/"+infolist.at(i));
            }
        }
    }
    

     

    由于Android程序最高权限只是system级别,默认没有权限访问/dev/设备节点文件,导致程序无法打开设备节点。

    所以,需要提前使用ADB命令进入到Android设备shell终端,chmod 777 /dev/video* 执行命令修改权限。

     

    Android8.1 下使用adb获取权限方法

    1. 第一次启动系统,如果需要更改系统文件,需要关闭安全验证 (注:安装apk不需要关闭),关闭安全验证后需要重启
    adb root
    adb disable-verity
    adb reboot
    2. 重启后,获得root权限,并重新挂载 /system 开启写入权限
    adb root
    adb remount
    3. 上传文件
    adb push example.txt /system/

     

    修改权限的步骤:

    wbyq@wbyq:~/qt_code/android_app/android$ adb devices
    wbyq@wbyq:~/qt_code/android_app/android$ adb root
    wbyq@wbyq:~/qt_code/android_app/android$ adb remount
    wbyq@wbyq:~/qt_code/android_app/android$ adb shell
    nanopc-t4:/ # chmod 777 /dev/video1
    nanopc-t4:/ # exit
    wbyq@wbyq:~/qt_code/android_app/android$

     

    权限修改之后就可以,打开APP,测试程序。

     

    下面公众号里有全套QT、C、C++基础学习教程:

    展开全文
  • 由于现在的摄像头都是usb的,最后终于实现了在web程序中调用摄像头,可以通过js代码控制拍照,通过ajax技术实现数据的上传,因为是是js调用的,所以也可以用于asp,php和html页面上,就是说支持多种服务器,刚弄完,...

    在项目中要用到jsp页面实现网页采集摄像头图像,并实现上传的功能,页面主要js调用的,所以可以使用多种语言php,asp等都可以使用,而且是跨浏览器的。

    使用方法1:

    下载 printscreen4web-jsp.war(最下面有下载地址),然后放到tamcat目录webapp文件夹下面,启动tomcat,访问http://127.0.0.1:8080/printscreen4web-jsp/

    主要调用文件 :1.index.html.2avatar.jsp


    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@page import="java.net.URLEncoder"%>
    <%@page import="com.censoft.zzportal.util.*"%>
    <%@page import="java.io.FileOutputStream"%>
    <%@page import="java.net.URLDecoder"%>


    <%!
    String imagepath1="";
    //编辑页面中包含 camera.swf 的 HTML 代码
    public String renderHtml(String id,String basePath,String input)
    {
    String outinput="";
    try {
    outinput = URLDecoder.decode(input);
    }catch(Exception e)
    {
    System.out.println("解码错误!");
    }
    String[] tmp_input=outinput.split("@");//input传递的类型和uid
    //System.out.println(input+","+tmp_input.length);

    String uc_api =URLEncoder.encode(basePath+"upload/avatar.jsp");


    String urlCameraFlash = "camera.swf?nt=1&inajax=1&appid=1&input="+input+"&uploadSize=1000&ucapi="+uc_api;
    urlCameraFlash = "<script src=\"common.js?B6k\" type=\"text/javascript\"></script><script type=\"text/javascript\">document.write(AC_FL_RunContent(\"width\",\"450\",\"height\",\"253\",\"scale\",\"exactfit\",\"src\",\""+urlCameraFlash+"\",\"id\",\"mycamera\",\"name\",\"mycamera\",\"quality\",\"high\",\"bgcolor\",\"#ffffff\",\"wmode\",\"transparent\",\"menu\",\"false\",\"swLiveConnect\",\"true\",\"allowScriptAccess\",\"always\"));</script>";


    return urlCameraFlash;
    }
    public String getFileExt(String fileName) {
        // 下面取到的扩展名错误,只有三位,而如html的文件则有四位
        // extName = fileName.substring(fileName.length() - 3, fileName.length()); //扩展名
        int dotindex = fileName.lastIndexOf(".");
        String extName = fileName.substring(dotindex, fileName.length());
        extName = extName.toLowerCase(); //置为小写
        return extName;
    }
    private byte[] getFlashDataDecode(String src)
    {
    char []s=src.toCharArray();
    int len=s.length;
        byte[] r = new byte[len / 2];
        for (int i = 0; i < len; i = i + 2)
        {
            int k1 = s[i] - 48;
            k1 -= k1 > 9 ? 7 : 0;
            int k2 = s[i + 1] - 48;
            k2 -= k2 > 9 ? 7 : 0;
            r[i / 2] = (byte)(k1 << 4 | k2);
        }
        return r;
    }
    public boolean saveFile(String path,byte[]b){
    try{
    FileOutputStream fs = new FileOutputStream(path);
       fs.write(b, 0, b.length);
       fs.close();
    return false;
    }catch(Exception e){
       return true;
    }
    }
    %>


    <%
    String uploadtype= request.getParameter("uploadtype");
    //图片上传类型:头像,logo,图片分别对应参数:head,logo,pic没有传递,默认为PIC
    if("".equals(uploadtype))
    {
    uploadtype="pic";
    }
    //最终裁剪好的图片存放位置
    String uid=request.getParameter("uid");
    imagepath1=uploadtype+"/"+uid+"_big.jpg";

    String action= request.getParameter("a");
    //String input=request.getParameter("input");
    String path = request.getContextPath();
    String infoFilePath="";
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    if(action==null){
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <style>
    body{
    margin: 0;
    border: 0;
    }
    </style>
    <script type="text/javascript">
    function updateavatar() {
    var img1="<%=imagepath1%>";
    if(window.opener.document.getElementById("imgpath1"))
    {
    window.opener.document.getElementById("imgpath1").value=img1;
    window.opener.document.getElementById("showimg1").src="upload/"+img1;
    }
    window.close();
    }

    </script>
    </head>
    <body>
    <%
    out.print(renderHtml("5",basePath,URLEncoder.encode(uploadtype+"@"+uid)));
    %>
    </body></html>
    <%
    }else if("uploadavatar".equals(action)){//上传临时图片,可以自己实现
    //System.out.println(action);
    UploadUtil uploadUtil = new UploadUtil();
    boolean isOk = uploadUtil.initParam(pageContext,request);
    if (isOk == false)
    {
    System.out.println("页面出错:" + uploadUtil.getMsg());
    return;
    }
    //上传附件
    isOk = uploadUtil.uploadFile("");
    if (isOk == false)
    {
    System.out.println("页面出错:" + uploadUtil.getMsg());
    return;
    }
    Map map = uploadUtil.getUploadFiles();
    if (map == null)
    {
    System.out.println("页面出错:上传附件失败");
    }
    if (map.size() == 0)
    {
    System.out.println("页面出错:没有上传附件");
    return;
    }
    //获取附件文件名和存储文件路径
    for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
    {
    infoFilePath = (String) iter.next();
    String infoFileName = (String) map.get(infoFilePath);
    //infoFilePath=infoFilePath.substring(infoFilePath.lastIndexOf("\\")+1);
    //System.out.println(infoFilePath);
    //infoFilePath=infoFilePath.substring(infoFilePath.indexOf("webapps")+8);
    infoFilePath=infoFilePath.replaceAll("\\\\", "/");
    //System.out.println(basePath+"upload"+infoFilePath);
    out.clear();
    out.print(basePath+"upload"+infoFilePath);
    }


    }else if("rectavatar".equals(action)){//缩略图
    String avatar1 = request.getParameter("avatar1");//大
    String avatar2 = request.getParameter("avatar2");//中
    String avatar3 = request.getParameter("avatar3");//小
    String output ="";
    try {
    output = URLDecoder.decode(request.getParameter("input"));
    }catch(Exception e)
    {
    System.out.println("解码错误!");
    }

    String[] tmp_input=output.split("@");//input传递的类型和uid
    String pathff = request.getSession().getServletContext().getRealPath("/")+ "upload\\";
    String imgfilepath=pathff+tmp_input[0];
    imagepath1=imgfilepath+"/"+tmp_input[1]+"_big.jpg";


    out.clear();
    boolean a1=saveFile(imagepath1,getFlashDataDecode(avatar1));

    if(a1){
    out.print("<?xml version=\"1.0\" ?><root><face success=\"0\"/></root>");
    }else{
    out.print("<?xml version=\"1.0\" ?><root><face success=\"1\"/></root>");
    }

    }
    %>


    最后printscreen4web-jsp.war下载地址:http://602.s21-2.faidns.com/2872602/0/ABUIABAAGAAgs4y-mQUol8TuuwM?f=printscreen4web-jsp.war&v=1395639859

     


    展开全文
  • 这里直接给出两个函数,大家调用2个函数就可以实现对视频的帧率的读取摄像头帧的获取。 读取视频: void readVideo(String path) { VideoCapture capture(path); while (true) { Mat frame; capture ...

    opencv是利用ffmpeg来对视频进行解码出每一帧,然后来显示的。这里直接给出两个函数,大家调用2个函数就可以实现对视频的帧率的读取和 摄像头帧的获取。

    读取视频:

    void readVideo(String path)
    {
    
    	VideoCapture capture(path);
    
    	while (true)
    	{
    		Mat frame;
    		capture >> frame;
    
    		if (frame.empty()) {
    			break;
    		}
    		int h = frame.rows;
    		int w = frame.cols;
    		const char *name = "video";
    		// 这里定义为0,则窗口图像会随着窗口压缩,为1则不会,若窗口小于图像没,则图像显示不全
    		cvNamedWindow(name,0);
    		cvResizeWindow(name, w/2, h/2);
    		imshow(name, frame);
    		//等30ms显示下一帧
    		waitKey(30);
    	}
    
    }

    读取摄像头数据:

    
    void readCameraData()
    {
    		VideoCapture capture(0);
    
    		while (true)
    		{
    			Mat frame;
    			capture >> frame;
    
    			if (frame.empty()) {
    				break;
    			}
    			int h = frame.rows;
    			int w = frame.cols;
    			const char *name = "video";
    			cvNamedWindow(name, 0);
    			cvResizeWindow(name, w / 1, h / 1);
    			imshow(name, frame);
    			//等30ms显示下一帧
    			waitKey(30);
    		}
    	
    }
    

    其实摄像头还是视频,主要在于初始化videocampture的时候,传入的参数,若为字符串视频路径,则是读入视频,传入 整数 0 则表示摄像头。

    展开全文
  • 基于海康sdk的java程序摄像头实时抓拍图片保存到本地的Maven项目,将maven项目导入后修还本项目中HCNetSDK.java中的在库文件路径即可
  • Opencv的videocapture有个特点就是:当你读取摄像头的时候,摄像头的每帧数据会全部存入你的缓冲区,你需要一帧接一帧的把缓冲区的图片依次进行处理,如果你的处理速度小于存进缓冲区的速度,那么缓冲区的图片就越...
  • java实现摄像头调用,处理视频流

    万次阅读 2018-07-23 14:15:01
    java实现摄像头调用,处理视频流 package com.xuggler; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageOutputStream; import j...
  • 读取摄像头: import cv2 as cv if __name__ == '__main__': cap = cv.VideoCapture(0) #一般电脑内置摄像头为0,你可以通过设置成 1 或者其他的来选择别的摄像头 if not cap.isOpened(): print("Cannot open ...
  • 英寸 IPS 5G 2.4G双频Wi-Fi + 摄像头型号 单核处理器 双核处理器 diff --git a/vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values/strings.xml b/vendor/mediatek/proprietary/packages/apps/...
  • 首先需要说明的是JMF是个什么东西?这个简单问下百度,在百度里输入JMF后看百度百科就很...下来就说正事了,功能就说用电脑本机上的摄像头采集数据然后存放成视频文件就ok了 好了看代码 先是启动类   public ...
  • 基于OpenCV读取摄像头进行人脸检测和人脸识别

    万次阅读 多人点赞 2014-05-03 21:39:26
     //read_img这个函数直接从einfacedata/trainingdata目录下读取图像数据并默认将图像置为0    //所以如果用这个函数只能用来单个人脸验证    if(!read_img(images, labels))    {    cout ...
  • java调用usb摄像头

    千次阅读 2016-02-24 19:52:50
    一、采用ocx的方式也就是activex插件的模式调用本地的摄像头 一般来说 调用外接的usb摄像头成功率会高一点,某些笔记本有时会无法成功调用自带的摄像头 ...二、采用基于opencv开发的javacv开源工具进行
  • Java读取二维条码

    2018-01-16 13:11:03
    package com.laning.qrcode; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import javax.imageio.ImageIO; import com.google.zxing.Bina
  • javacv获取摄像头图像

    千次阅读 2018-05-17 14:18:50
    javacv开发包是用于支持java多媒体开发的一套开发包,可以适用于...音视频处理使用ffmpeg,图像处理使用opencv,摄像头抓取使用opencv1、读取摄像头的图像public class JavavcCameraTest{ public static void main...
  • javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV) javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-...
  • javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV) javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV...
  • java 调用电脑摄像头

    千次阅读 2018-08-08 13:17:00
    上面就是调用摄像头的效果. 下面贴带码 首先需要导一个jar包 <dependency> <groupId>com.github.sarxos</groupId> <artifactId>webcam-capture</artifactId></dependency>...
  • 如果你只有一个摄像头,为了测试多个摄像头读取效果,你开启了多个读取窗口同时读取同一个摄像头,你会发现:“对于一般的摄像头,开启两个以上就会卡顿”,而这样操作是不对的。因为摄像头本身也是一个“服务器”...
  • //将所获取摄像头数据放入IplImage int width = image.width(); int height = image.height(); final BufferedImage bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); ...
  • 首先是给linux 安装摄像头驱动,可参考https://www.cnblogs.com/uestc-mm/p/7587783.html(二) import org.bytedeco....import org.bytedeco.javacv.*; public class Main { public static void main(S...
  • // 这里一定分别add两个surface,一个Textureview的,一个ImageReader的,如果没add,会造成没摄像头预览,或者没有ImageReader的那个回调!! mCaptureRequest.addTarget(surface); mCaptureRequest.addTarget...
  • 实现Camera数据的预览,可以使用TextureView,作为View heirachy的一个硬件加速层,从SurfaceTexture中获取到的纹理数据更新到HardwareLayer中,完成显示; 也可以如这篇文章里讨论的,使用opengles完成绘制,相比较与前一...
  • opencv读取摄像头或者视频一种是早期版本的IplImage结构体,图片就存在结构体指针IplImage*中,另一种是Mat类,两者在操作上略有差异,且opencv2都兼容这两个版本,前面的博客也说了两者可相互转换,工程实际中经常...
  • javafx通过javacv访问网络摄像头

    千次阅读 2017-05-30 18:58:25
    百度搜 javafx 摄像头,结果都...访问USB或机身自带摄像头,不用javacv也能很容易的实现,具体参考: https://github.com/sarxos/webcam-capture/tree/master/webcam-capture-examples/webcam-capture-javafx we...
  • zxing 提供的sample都是原生camera采集摄像头数据,而android上使用UVCCamera采集摄像头的情况比较多,那么怎么在uvccamera采集到摄像头数据,并调用zxing扫码呢。直接上代码。 DecodeHandle.java package ...
  • opencv读取esp32cam摄像头视频流

    千次阅读 2020-03-14 10:12:36
    之前在网上看到过安卓读取esp32cam的jpeg数据流,最近又在学opencv所以就想着把java改成c 先来张图片 第一步建立socket并get /stream然后就是不断地读!!!!!!!! 这些都放在了一个线程 然后处理一下读取数据...
  • 最麻烦的是如何高效处理捕捉到的每帧数据,这也导致做出来的效果不好,5–6帧每秒,像在看ppt,所以这次把捕捉到的数据先转换为YuvImage对象,之后开启新线程执行YuvImage转jpg的方法得到jpg得字节数据后启动新线程去...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,506
精华内容 2,602
关键字:

java读取摄像头数据

java 订阅