QT实训(二)-QT相机

实现效果

QT实训(二)-QT相机_第1张图片

完整代码

Qt-camera

主要代码

	QCamera *camera;//摄像头
    QCameraViewfinder *view;//捕捉摄像头并显示
    QCameraImageCapture *cap;//截图
	//打开 摄像头
    QCameraInfo info = QCameraInfo::defaultCamera();//获取摄像头的信息,获取的信息如下:分别是description与deviceName
    qDebug() << info.description();//设备名称,型号,厂商
    qDebug() << info.deviceName();//摄像头的名称,是由系统自动生成的一串唯一的标识符
    
    //代表摄像头
    camera = new QCamera(info);
    //将view实例化,用来捕获摄像头画面,并设置它的父对象为ui中的label
    view = new QCameraViewfinder(ui->label);
    
    //给捕获器设置位置,大小
    view->move(0,0);
    view->resize(ui->label->size());
    
    //给摄像头设置画面捕捉器view,用来将摄像头拍到的画面显示出来
    camera->setViewfinder(view);
	//到这里为止,程序员可以操作camera的start与stop函数用来开启和暂停摄像头的拍摄;也可以使用view的hide方法将摄像头拍到的图片隐藏

    //实例化截图工具,用来截图
    cap = new QCameraImageCapture(camera);
    //此刻,可以调用cap的capture()方法进行截图
    
    //当cap调用capture()方法时,同时还会发出QCameraImageCapture的imageCaptured信号;信号接收者为this(也就是当前widget),接收信号的槽函数是save_image
    connect(cap,&QCameraImageCapture::imageCaptured,this,&Widget::save_image);
    
    //save_image方法如下,因为void QCameraImageCapture::imageCaptured(int id, const QImage &preview)有两个参数,所以save_image也对应(int id, QImage img)两个参数
    //保存捕获的图片
	void Widget::save_image(int id, QImage img)//QImage img表示捕获的图片
	{
	    //将文件保存到debug文件夹下的img文件夹下
	    QString now = "./img/"+QString::number(++page)+".jpg";
	    if(!now.isNull())
	    {
	        img.save(now);
	        QMessageBox::information(this,"提示","截图成功");
	        strlist.append(now);//保存这张图片
	    }else{
	        QMessageBox::information(this,"提示","截图失败");
	    }
	
	}

注:槽函数的参数个数应该小于等于信号函数的参数个数,
建议直接这样做:信号函数几个参数,槽函数就几个参数(如果,有的参数,槽函数用不到,那就放在那里,不用管)

你可能感兴趣的:(Qt,qt,开发语言,c++)