【学习记录第1篇】C++中通过OPENCV调用usb摄像头并保存图片

  • 准备
  • 外置USB摄像头代码
  • 外置USB摄像头运行结果
  • 外置USB超声波探头代码
  • 外置USB超声波探头运行结果
  • 第一篇博客的感想

准备

外置USB摄像头型号:LifeCam Studio

Visual Studio 2017

OpenCV版本:3.4.1
(关于OpenCV的环境配置参考文章有很多,这里就不多赘述啦!)

因为自己学习内容的关系,比起摄像头更多使用的超声波探头。
所以为了记录自己的学习过程,文章的后半段会放上调用超声波探头拍摄并保存的代码和结果图。

外置USB摄像头代码

非常简单直接上代码!

//添加头文件
#include<opencv2/core/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
#include<iomanip>
#include<fstream>
#include<chrono>
#include<string>
using namespace std;
using namespace cv;
int main()
{//打开一个默认的相机VideoCapture capture(0);//检查是否成功打开if (!capture.isOpened())return -1;//设置摄像头的分辨率capture.set(CV_CAP_PROP_FRAME_WIDTH, 720);capture.set(CV_CAP_PROP_FRAME_HEIGHT, 720);capture.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));//摄像头帧数capture.set(CV_CAP_PROP_FPS, 15);//打印摄像头参数printf("width = %.2f\n", capture.get(CV_CAP_PROP_FRAME_WIDTH));printf("height = %.2f\n", capture.get(CV_CAP_PROP_FRAME_HEIGHT));printf("fbs = %.2f\n", capture.get(CV_CAP_PROP_FPS));//定义摄像头读取的一帧画面Mat frame;chrono::system_clock::time_point start, end;int max_image = 0;//计数int i = 1;//将图片保存到“test”文件夹中// !!!“test”文件夹需要事先手动创建,不然图片就无法保存啦!!!!string DATA = "test";while (1){capture >> frame;//从相机读取新一帧//镜像摄像头画面flip(frame, frame, 1);//Mat src = frame;if (!frame.empty() ){start = chrono::system_clock::now();ostringstream oss;//给保存至文件夹中的图片进行编号oss << setfill('0') << setw(3) << i;//将图片保存至文件夹中imwrite(DATA + "\\pic" + oss.str() + ".png", frame);imshow("video", src);//显示waitKey(1);//当保存500张图片的时候,停止运行if (i == 500) {cout << max_image;break;}end = chrono::system_clock::now();double max_image2 = chrono::duration_cast<chrono::milliseconds>(end - start).count();max_image = max_image + max_image2;//计数i++;}}return 0;
}

代码内容很简单,但需要注意的是图片保存的文件夹需要事情事先手动创建,不然程序就找不到位置保存图片啦!重要的事情说三遍!!!

外置USB摄像头运行结果

外置USB超声波探头代码

现在开始自己的学习过程啦!小伙伴看到这里就可以撤退啦!

#include "stdafx.h"
#include "BankSpd.h"
#include "BankSpdDlg.h"
#include "afxdialogex.h"
#include "CSmc.h"
#include "CSmcdef.h"
#include <mutex>
#include <omp.h>
#include <thread>
#include <mutex>
#include <thread>
#include <exception>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <chrono>
#include "opencv2/opencv.hpp"
#include "opencv2\highgui.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"
#include "opencv2/core.hpp"
#include "opencv2/videoio.hpp"
#include <USBProbe.hpp>

因为创建的是MFC工程文件,不只是调用超声波探头,还有机器人控制,所以头文件有点多啦!
但是重点是 <USBProbe.hpp>这个头文件,需要像OpenCV一样,在工程的附加包含目录和附加库目录中进行环境配置之后,才可以调用!

void CBankSpdDlg::OnBnClickedButton2()
{//调用USB超声波探头并进行拍摄和保存std::chrono::system_clock::time_point  start, end; std::chrono::system_clock::time_point  start_s, end_e; //计时用int elapse_ = 0;//探头USBProbe usb_probe;bool freeze_flg = false;bool working = true;//设置显示的超声波画面参数usb_probe.setConversionParams(220, 750, 60);usb_probe.disableFreeze();//将图片保存至“2020default”文件夹中string DATA = "2020default";int i = 1;//计数//---------------------------------------------------图像处理开始while (working) {auto src = usb_probe.read();if (!src.empty()) {//--------------------------------------------------------开始时间start = std::chrono::system_clock::now();//--------------------------------------------------------取得连续的图片并进行保存ostringstream oss;oss << std::setfill('0') << std::setw(3) << i;imwrite(DATA + "\\pic" + oss.str() + ".png", src);cv::imshow("图像", src);//--------------------------------------------------------拍摄2000张图片后停止if (i == 2000){cout << elapse_;break;}end = std::chrono::system_clock::now();double elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();elapse_ = elapse_ + elapsed;i++;}
}

因为MFC工程文件,所以开头是【void CBankSpdDlg::OnBnClickedButton2()】的形式。

外置USB超声波探头运行结果

第一篇博客的感想

作为2020年的目标之一,创建一个属于自己的博客,终于在今天实现啦!在记录自己学习过程之余,顺便分享给大家~

自己平时学习的时候,也需要参考很多人的代码,虽然往往都可以搜到很多相关资料,但内容往往都千篇一律,真正有参考价值也少之又少,所以我尽量做到自己博客中的内容是行之有效的!

没想到这个CSDN的Markdown编辑器还挺好用的!

有任何指教请直接留言我~或者 zhoujiayi1017@gmail.com

C++中调用usb摄像头并保存图片【学习记录第1篇】相关推荐

  1. 五十、opencv调用USB摄像头并保存图片

    @Author: Runsen opencv OpenCV是计算机视觉的一个模块. OpenCV可以通过图像处理减少图像噪声,调整图像亮度.颜色或者对比度等等.想要进一步系统了解OpenCV图像处理基 ...

  2. php调用linux摄像头,Linux_Linux中开发USB摄像头驱动详解,USB摄像头以其良好的性能和低 - phpStudy...

    Linux中开发USB摄像头驱动详解 USB摄像头以其良好的性能和低廉的价格得到广泛应用.同时因其灵活.方便的特性,易于集成到嵌入式系统中.但是如果使用现有的符合Video for Linux标准的驱 ...

  3. android中uvc调用usb摄像头,一篇文章带你了解Android Usb摄像头

    在实际项目中,有些客户可能需要支持usb摄像头功能,如果你也遇到usb摄像头支持的问题,那这篇文章一定能帮助到你. 目前android是支持uvc协议的,也就是只要我们采用的usb摄像头是支持uvc协 ...

  4. Jetson NX YOLOV目标检测学习笔记1----CV调用USB摄像头

    1.相关的包安装(安装步骤自行百度) python 版本3.6.9 pip3 install opencv-python=='xxxx' 其中xxx为对应版本号(注意:opencv我用到的版本是ope ...

  5. AndroidUSBCamera调用USB摄像头问题

    UVC_ERROR_INVALID_DEVICE not open camera:err=-50 由于客户需求,笔者最近在测试大型android平板设备,但是所使用的厂商提供的设备并未继承前后置摄像头 ...

  6. C#调用usb摄像头的实现方法

    1.下载aforge类库,下载地址:,我下载的版本是:aforge.net framework-2.2.5.exe: 2.下载安装好后,将下载类库中的release文件夹复制到c#项目的可执行文件文件 ...

  7. ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。

    项目中使用opencv调用usb摄像头,运行过程中,会出现摄像头掉线的情况.猜测掉线原因是硬件相关,可能是摄像头,也可能是usb线和端口. 这里主要介绍两种掉线情况以及代码重连摄像头的方式. 1.第一 ...

  8. MATLAB调用USB摄像头的过程记录

    目录 01-测试USB摄像头是否正常工作 02-安装USB Webcams硬件支持包 03-调用系统中的USB摄像头 01-测试USB摄像头是否正常工作 首先将USB摄像头连接上电脑主机,然后通过Wi ...

  9. C# 调用USB摄像头

    目录 C#调用USB摄像头使用AForge类库进行开发 1.AForge安装 2.下载完毕后进行USB摄像头类封装 C#调用USB摄像头使用AForge类库进行开发 1.AForge安装 右击工程,在 ...

最新文章

  1. 怎么取消任意Windows窗口总在最前
  2. java poi 更新excel_在Java Apache POI中更新现有的Excel文件
  3. Python-OpenCV 笔记7 -- 绘图(Draw)
  4. 83. 删除排序链表中的重复元素 golang
  5. 华为宣布:免费培养8000名开发者! 学习免费!实验免费!考证免费!
  6. lazarus开发android应用程序指南,Lazarus开发Android应用程序指南(2)
  7. 华为鸿蒙系统学习笔记5-华为方舟编译器正式开源及相关源码下载
  8. java day61【 SpringMVC 的基本概念 、 SpringMVC 的入门 、 请求参数的绑定 、常用注解 】...
  9. 【云栖大会】创无止境 YunOS云栖大会诠释万物互联
  10. NASA-TLX (Task Load Index)量表学习总结
  11. mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式
  12. Vue-计算属性与事件监听
  13. 保密协议中竞业限制未写明补偿金的是否可以生效?
  14. c语言程序函数由什么两部分组成,C语言中一个函数由函数首部和_____两部分组成. 答案:函数体...
  15. Tech Talk| Redmi K50 电竞版手机极致散热技术详解
  16. VS code 使用技巧-设置鼠标滚轮翻页速度(Mac版本)
  17. C++容器方法大汇总
  18. 牛X公司的开会方式,明天开始参照执行
  19. 牛逼!程序员给鸿星尔克写了一个720°全景看鞋展厅
  20. 深度linux deepin双屏,deepin nvidia 双显卡 双屏

热门文章

  1. 随手查——Multisim
  2. 彩色星球科技冠名著名钢琴艺术家吴牧野世界巡演《肖邦圆舞曲全集》长沙站演出...
  3. 日语笔记(1) 动词(一类动词、二类动词、三类动词)
  4. TCH FR/HR全速率、半速率信道编码
  5. java反射课程一:基本API使用
  6. python中为什么加上中文注释就会报错
  7. 官方确认:新增一所“双一流”大学!
  8. Swing 入门介绍
  9. 大象-PHPHub 第三方 Android 客户端
  10. 20行Python代码爬取2W多条音频文件素材【内附源码+详细解析】新媒体创作必备