手机端file限制只能选择图片、视频、音频,直接打开摄像头拍照或录像

限制只能选择图片

<input type="file" accept="image/*">

 

限制只能选择视频

<input type="file" accept="video/*">

 

限制只能选择音频

<input type="file" accept="audio/*">

 

直接打开摄像头拍照

<input type="file" accept="image/*" capture="camera">

 

直接打开摄像头录像

<input type="file" accept="video/*" capture="camera">

 

听说,打赏我的人最后都找到了真爱。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实现该功能需要以下步骤: 1. 安装OpenCV库并配置Qt项目中的OpenCV 2. 打开摄像头并捕获视频帧 ``` cv::VideoCapture cap(0); //打开默认的摄像头 if(!cap.isOpened()) //检查是否打开成功 { qDebug() << "Error opening video stream or file"; return -1; } cv::Mat frame; //用于存储每一帧图像 while(true) { cap >> frame; //捕获视频帧 if(frame.empty()) //检查是否捕获到有效帧 break; cv::imshow("Camera", frame); //显示摄像头捕获的图像 cv::waitKey(1); } cap.release(); //释放摄像头 cv::destroyAllWindows(); //关闭显示窗口 ``` 3. 开始录像 ``` cv::VideoWriter writer; //定义视频编码器 writer.open("output.avi", cv::VideoWriter::fourcc('M','J','P','G'), 30, cv::Size(cap.get(cv::CAP_PROP_FRAME_WIDTH), cap.get(cv::CAP_PROP_FRAME_HEIGHT))); //打开输出文件,设置视频编码器、帧率和视频尺寸 while(true) { cap >> frame; //捕获视频帧 if(frame.empty()) //检查是否捕获到有效帧 break; writer.write(frame); //将帧写入视频编码器 cv::imshow("Camera", frame); //显示摄像头捕获的图像 cv::waitKey(1); } writer.release(); //释放视频编码器 cap.release(); //释放摄像头 cv::destroyAllWindows(); //关闭显示窗口 ``` 4. 关闭摄像头并保存视频 ``` cv::VideoWriter writer; if(writer.open("output.avi", cv::VideoWriter::fourcc('M','J','P','G'), 30, cv::Size(cap.get(cv::CAP_PROP_FRAME_WIDTH), cap.get(cv::CAP_PROP_FRAME_HEIGHT)))) { cv::Mat frame; while(true) { cap >> frame; if(frame.empty()) break; writer.write(frame); cv::imshow("Camera", frame); cv::waitKey(1); } writer.release(); } cap.release(); cv::destroyAllWindows(); ``` 注意,如果要实现录制时开始和停止的功能,可以使用一个标志变量来控制录像过程。例如: ``` bool isRecording = false; //标志变量,表示是否正在录像 cv::VideoWriter writer; while(true) { cap >> frame; if(frame.empty()) break; if(isRecording) //如果正在录像,则将帧写入视频编码器 writer.write(frame); cv::imshow("Camera", frame); int key = cv::waitKey(1); if(key == 's') //按下's'键开始录像 { isRecording = true; writer.open("output.avi", cv::VideoWriter::fourcc('M','J','P','G'), 30, cv::Size(cap.get(cv::CAP_PROP_FRAME_WIDTH), cap.get(cv::CAP_PROP_FRAME_HEIGHT))); } else if(key == 'q') //按下'q'键停止录像并保存 { isRecording = false; writer.release(); } } cap.release(); cv::destroyAllWindows(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值