文章目录

  • 一、环境介绍
  • 二、环境配置
  • 三、完整代码

一、环境介绍

  • 系统:windows10
  • 开发环境:VS2015+OpenCV3.1
  • 其它库:pylon(安装basler官方SDK自带的库)

开发环境配置,可参考这里:VS2015 + OpenCV3.1 环境配置与项目搭建(C++版)

二、环境配置

1.首先根据自己的VS选择对应的版本

2.配置包含目录

3.配置库目录

4.配置附加包含目录

5.配置附加库目录

6.配置附加依赖项

三、完整代码

//定义是否保存图片
#define saveImages 0
//定义是否记录视频
#define recordVideo 0// 加载OpenCV API
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>//加载PYLON API.
#include <pylon/PylonIncludes.h>#include<iostream>#ifdef PYLON_WIN_BUILD
#include <pylon/PylonGUI.h>
#endif//命名空间.
using namespace Pylon;
using namespace cv;
using namespace std;
//定义抓取的图像数
static const uint32_t c_countOfImagesToGrab = 800;void main()
{//Pylon自动初始化和终止Pylon::PylonAutoInitTerm autoInitTerm;try{//创建相机对象(以最先识别的相机)CInstantCamera camera(CTlFactory::GetInstance().CreateFirstDevice());// 打印相机的名称std::cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl;//获取相机节点映射以获得相机参数GenApi::INodeMap& nodemap = camera.GetNodeMap();//打开相机camera.Open();//获取相机成像宽度和高度GenApi::CIntegerPtr width = nodemap.GetNode("Width");GenApi::CIntegerPtr height = nodemap.GetNode("Height");//设置相机最大缓冲区,默认为10camera.MaxNumBuffer = 5;// 新建pylon ImageFormatConverter对象.CImageFormatConverter formatConverter;//确定输出像素格式formatConverter.OutputPixelFormat = PixelType_BGR8packed;// 创建一个Pylonlmage后续将用来创建OpenCV imagesCPylonImage pylonImage;//声明一个整形变量用来计数抓取的图像,以及创建文件名索引int grabbedlmages = 0;// 新建一个OpenCV video creator对象.VideoWriter cvVideoCreator;//新建一个OpenCV image对象.Mat openCvImage;// 视频文件名std::string videoFileName = "openCvVideo.avi";// 定义视频帧大小cv::Size frameSize = Size((int)width->GetValue(), (int)height->GetValue());//设置视频编码类型和帧率,有三种选择// 帧率必须小于等于相机成像帧率cvVideoCreator.open(videoFileName, CV_FOURCC('M', 'J', 'P', 'G'), 24, frameSize, true);//cvVideoCreator.open(videoFileName, CV_F0URCC('M','P',,4','2’), 20, frameSize, true);//cvVideoCreator.open(videoFileName, CV_FOURCC('M', '3', 'P', 'G'), 20, frameSize, true);// 开始抓取c_countOfImagesToGrab images.//相机默认设置连续抓取模式camera.StartGrabbing(c_countOfImagesToGrab, GrabStrategy_LatestImageOnly);//抓取结果数据指针CGrabResultPtr ptrGrabResult;// 当c_countOfImagesToGrab images获取恢复成功时,Camera.StopGrabbing() //被RetrieveResult()方法自动调用停止抓取while (camera.IsGrabbing()){// 等待接收和恢复图像,超时时间设置为5000 ms.camera.RetrieveResult(5000, ptrGrabResult, TimeoutHandling_ThrowException);//如果图像抓取成功if (ptrGrabResult->GrabSucceeded()){// 获取图像数据cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;//将抓取的缓冲数据转化成pylon image.formatConverter.Convert(pylonImage, ptrGrabResult);// 将 pylon image转成OpenCV image.openCvImage = cv::Mat(ptrGrabResult->GetHeight(), ptrGrabResult->GetWidth(), CV_8UC3, (uint8_t *)pylonImage.GetBuffer());//如果需要保存图片if (saveImages){std::ostringstream s;// 按索引定义文件名存储图片s << "save//image_" << grabbedlmages << ".jpg";std::string imageName(s.str());//保存OpenCV image.imwrite(imageName, openCvImage);grabbedlmages++;}//如果需要记录视频if (recordVideo){cvVideoCreator.write(openCvImage);}//新建OpenCV display window.namedWindow("OpenCV Display Window", CV_WINDOW_NORMAL); // other options: CV_AUTOSIZE, CV_FREERATIO//显示及时影像.imshow("OpenCV Display Window", openCvImage);// Define a timeout for customer's input in// '0' means indefinite, i.e. the next image will be displayed after closing the window.// '1' means live streamwaitKey(10);}}}catch (GenICam::GenericException &e){// Error handling.cerr << "An exception occurred." << endl<< e.GetDescription() << endl;}system("pause");return ;
}

测试结果:


温馨提示:这里我配置的是Release x64,所以在编译运行时,也要选择相应的选项。

Opencv打开basler相机——实现显示视频、保存图片、记录视频(Windows下)相关推荐

  1. basler 相机取图超时_Opencv打开basler相机——实现显示视频、保存图片、记录视频(Windows下)...

    //定义是否保存图片 #define saveImages 0 //定义是否记录视频 #define recordVideo 0 // 加载OpenCV API #include #include # ...

  2. 开源实时音视频技术WebRTC在Windows下的简明编译教程

    1.前言 随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢.现在很多直播产品都是基于WebRTC 进行二次开发做出来的. WebRTC是提供了一整套处理实时音视频的开源 ...

  3. Basler|基于OpenCV的Basler相机采集图像程序

    http://www.ithao123.cn/content-8057925.html 采用Basler4.0SDK编写,利用Event机制在回调函数中生成灰度图像 回调函数中图像生成代码,利用CCD ...

  4. basler 相机取图超时_Basler|基于OpenCV的Basler相机采集图像程序

    采用Basler4.0SDK编写,利用Event机制在回调函数中生成灰度图像 回调函数中图像生成代码,利用CCD中获取的无符号字符型数组转变成 Mat类型 Mat grab( siz, CV_8UC1 ...

  5. 视频服务器(4) webrtc-streamer(windows下卡住了)

    第二个:https://github.com/mpromonet/webrtc-streamer 这个是c++的,比上面的go的麻烦一些. 目录 总结.有效指令 一.webrtc-streamer c ...

  6. opencv打开mp4文件_OpenCV 实现播放本地mp4视频或远程服务mp4视频

    上代码: import cv2 # 获得视频的格式 videoCapture = cv2.VideoCapture('./mac-bruce-tpl-cn-2018_1280x720h.mp4') # ...

  7. C#、打开basler相机

    使用到了Basler的相机,利用C#编写的SDK,下面进行简单的整理记录. 首先引用basler的动态库文件,具体引用位置如下: 安装目录\Basler\pylon 5\Development\Ass ...

  8. 【音视频】RTMP:windows下搭建rtmp服务器(未完结...)

    0.RTMP服务器简介 0.1 Nginx-RTMP 使用Nginx和Nginx的RTMP模块(nginx-rtmp-module)搭建RTMP流媒体服务器. Nginx 是一款轻量级的 Web 服务 ...

  9. 基于MFC的Basler相机采集程序

    基于MFC的Basler相机采集程序 编程软件VS2015 相机Basler acA4024-8gc 本文采用了opencv3.4.10,并且采用了opencv1.0版本时代的CvvImage类,其对 ...

  10. 【basler】Chapter3:basler相机出现斜黑条纹

    basler相机出现斜黑条纹 2019.10.10 1. 使用pylon 6.0.0 版本出现斜黑条纹 2.CSDN上有博主谈到这个问题: https://blog.csdn.net/AI414010 ...

最新文章

  1. Postman最被低估的功能,自动化接口测试效率简直无敌
  2. Redis 集群规范
  3. 浅谈分布式 ID 的实践与应用
  4. OS / Linux / pthread_join() 和 pthread_detach() 函数区别
  5. 其他用户登陆到这台计算机,要登录到这台远程计算机,您必需拥有这台计算机上的‘终端服务器用户访问’权限解决方法...
  6. [置顶] java除0问题探究
  7. RTF文件格式【转】
  8. C++编程中const和#define的区别
  9. sqoop导出到mysql中文乱码问题总结、utf8、gbk
  10. 【Flutter】Dart中的抽象类和接口
  11. Android计算器界面布局
  12. 魔鬼作坊端游脱机封包辅助制作
  13. php10天速成培训,十天学会php之第十天
  14. python创建身份证城市_python构建 城市和省份字典 的实例应用
  15. 找不到主类或无法加载主类
  16. Discuz!开发之模板制作CSS扩展规范与语法规范
  17. 20200720《Flask进阶》——蓝本
  18. 二维码怎么做到微信防封_分享在微信内做推广微信链接被屏蔽怎么解决,微信域名防封的技术分析
  19. 聊聊Excel的大批量导入导出
  20. 汇编语言实现计算2的3次方

热门文章

  1. 99,36岁老码农现身说法
  2. 【数据分析】数据分析方法(一):5W2H 分析方法
  3. 计算机网络职业生涯规划书模板前言,计算机网络技术专业个人职业生涯规划书(参考模板).doc...
  4. 使用Servlet和JSP开发Java应用程序 ---- 豆瓣瓣项目(数据库 + JSP + Servlet)
  5. 浅析TVS管的响应时间与TVS管伏安特性曲线
  6. 2021-05-12
  7. linux强制安装deb,ubuntu强行修改deb安装包依赖
  8. 图像处理保研面试_北航信息与通信工程方向保研面试题集
  9. 不要低估实现难度,聊聊当下热议的“元宇宙”是什么?
  10. 【备读学术论文总览】研究方向论文清单