近期,入手一台baslerUSB接口的CCD相机,但是貌似之前图像采集的编程无法调动其摄像头,在网上搜了一下,大家的说法就是安装它的SDK文件包,并且调用它内部函数编写代码。其实新版的Basle相机驱动可执行文件就已经包含SDK库。安装好它的驱动,你可以在你安装的位置看到下面这两个文件:

application文件夹主要是写的是它的协议,这个不是重点,重点的是development这个文件夹,它含有include和lib,这就是opencv调用的库目录和附加依赖项,这里边的sample文件夹含有C语言,c#语言,c++语言的实例代码,这就主要是按需改写就可以了。下面的图就是development文件夹所有内容。

接下来,就需要在你项目里添加库目录和依赖项,以及把.lib文件全部移至你安装opencv中.lib位置(主要针对的是C语言案例,C++则是需要在c++文件夹里的头文件.h全部移至你程序源文件处),话不多说,现在先给大家编程c++语言的案例,如下图所示,你完全可以直接运行VC++project文件,新的版本的sdk貌似不需要修改其项目的属性的。如果你非要自己写代码,点开的C++source文件,也可以,不过,不知道为什么就算修改它项目的属性,添加相应的库目录和.lib文件,代码还是报错。自己才疏学浅还未探知原因。

这个sdk还是很强大的,它里头doc文件里边的pdf详细介绍的它主要代码的含义以及运行的流程,整体来说还是不错,有很多可以学习的地方。

如果你觉得它的讲解全是英文,不想看,这将转载别人的博客,代码流程还是很清晰的。个人不建议去下载它代码链接,因为你自己的驱动程序都已经有很完整的代码,没有什么必要去下载别人的代码,一方面版本太老合适,另一方面代码未必能在你的电脑上运行。

  http://blog.csdn.net/wenzhou1219/article/details/7543

一般的对于提供硬件编程来说,硬件生产厂家都会提供好SDK使用的手册和实例。手册中一般包括安装和配置流程,一些基本概念的介绍,SDK每个函数使用,SDK使用流程和实例(有些硬件实例直接写在手册中,有些会以单独文件存在,还有的两者皆有)。对于上位机软件开发人员来说拿到一个硬件上位机编程任务,首先应该阅读了解其SDK概念,再按照其介绍的SDK开发流程阅读其提供的实例,修改相应的实例为自己所用,有不懂的函数查询一下其用法即可。有些开发人员习惯性的去记其API,这是费时费力的做法,并不推荐。下面主要以实时图像采集讲解Basler相机的PylonC SDK的使用流程。

PylonC SDK的使用的总体流程图如下:

下面是其中对于不同的工作要求,加载相机对象和卸载相机对象是通用的。而要使用其他模块,如事件对象时,相应的改为加载事件对象和卸载事件对象,以及使用事件对象完成相关任务即可。编程时一定要对整个流程做好规划,特别是硬件编程时一定留意内存泄露,前面分配的资源一定要在后面释放。

下面是五个大流程的详细解析,需要的地方已经加以说明,并注解了需要用到的函数

加载相机对象

卸载相机对象

加载数据流抓取对象

卸载数据流抓取对象

单帧或连续抓图过程

按照以上介绍的流程即可实现实时图像采集

 

Basler usb SDK安装在opencv采集图像的更多相关文章

  1. 下载安装和OpenCV匹配的Android开发环境

    ok blog Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境 !!OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Jav ...

  2. Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境

    Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境 !!OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用Ope ...

  3. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  4. Java基于opencv实现图像数字识别(一)

    Java基于opencv实现图像数字识别(一) 最近分到了一个任务,要做数字识别,我分配到的任务是把数字一个个的分开:当时一脸懵逼,直接百度java如何分割图片中的数字,然后就百度到了用Buffere ...

  5. camera按键采集图像及waitKey的用法

    前言 项目需要通过摄像头采集图像并保存,主要是用于后续的摄像头标定.实现过程其实很简单,需要注意一些细节. 系统环境 系统版本:ubuntu16.04:opencv版本:opencv2.4.13:编程 ...

  6. Halcon WPF C#采集图像区域灰度值

    源码下载地址:https://github.com/lizhiqiang0204/ImageGray.git Halcon代码如下: *读取图片,转换成灰度图片 read_image (Image1, ...

  7. C#使用OpenCV剪切图像中的圆形和矩形

    前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形. 准备工作 首先创建一个Wpf项目--WpfOpenCV,这里版本使用Framework4.7.2. 然后使用Nuget搜索[Emgu.C ...

  8. Python3.5安装及opencv安装

    Python安装注意事项(版本3.5,系统windows)1.安装好Python后将D:\Program Files\Python.D:\Program Files\Python\Scripts加入P ...

  9. DirectX 9 SDK安装后在vs2010里编译BaseClasses出错问题解决方法

    打开你的dx的sdk安装目录,例如: D:/DX90SDK/Samples/C++/DirectShow/ 这里就有一个叫baseclasses的工程,为安全起见,请先备份此工程. 1,双击basec ...

随机推荐

  1. 【jdbcTemplate】使用jdbcTemplate查询的三种回调

    用于查询的回调接口定义主要有以下三种: org.springframework.jdbc.core.ResultSetExtractor.  基本上属于JdbcTemplate内部使用的Callbac ...

  2. <limits.h>和<float.h>

    头文件<limits.h>中定义了用于表示整类型大小的常量.以下所列的值是可接受的最小值,实际系统中可能有更大的值. CHAR_BIT char类型的位数 CHAR_MAX UCHAR_M ...

  3. iwpriv

    AuthMode             {OPEN,SHARED,WEPAUTO,WPAPSK,WPA2PSK,WPANONE} ::Set Authentication Mode EncrypTy ...

  4. activiti自定义流程之自定义表单(一):环境配置

    先补充说一下自定义流程整个的思路,自定义流程的目的就是为了让一套代码解决多种业务流程,比如请假单.报销单.采购单.协作单等等,用户自己来设计流程图. 这里要涉及到这样几个基本问题,一是不同的业务需求, ...

  5. [转]将Word转(保存)为带书签的PDF

    提到的方法非常管用,感谢原作者的分享. 原文地址:http://blog.163.com/rongting_chen/blog/static/16490684420114266192887/ 将wor ...

  6. 获取OpenCV中RotatedRect的绝对角度

    opencv中RotatedRect的angle这个成员变量总是诡异的不同寻常(http://stackoverflow.com/questions/15956124/minarearect-angl ...

  7. Synchronizing with Remote Repositories

    Synchronizing the states of local and remote repositories consists of pulling from and pushing to th ...

  8. SQL语言的三个分类:DDL、DML、DCL

    DML:数据操纵语言,主要是完成数据的新增,修改,删除和查询的操作. DDL:数据定义语言,主要是用来创建或修改表.视图.存储过程以及用户等. DCL:数据控制语言,是用来设置或更改数据库用户或角色权 ...

  9. PLSQL_性能优化系列14_Oracle High Water Level高水位分析

    2014-10-04 Created By BaoXinjian 一.摘要 PLSQL_性能优化系列14_Oracle High Water Level高水位分析 高水位线好比水库中储水的水位线,用于 ...

  10. php 设置一个函数的最大运行时间

    如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现 declare(ticks = 1); function a() { sleep(10); echo "a f ...