Basler acA1300-200uc相机使用教程

https://www.baslerweb.com/cn/products/cameras/area-scan-cameras/ace/aca1300-200uc/
开发文档
https://zh.docs.baslerweb.com/aca1300-200uc
pylon库(C++)
主要示例功能说明
https://blog.csdn.net/juliarjuliar/article/details/79457719
CameraEventPrinter.h
//包含一个为每一个事件函数输出一条消息的一个相机事件处理器
ConfigurationEventPrinter.h
//包含一个为每一个事件函数输出一条消息的一个配置事件处理器
ImageEventPrinter.h
//包含一个为每一个事件函数输出一条消息的一个配置事件处理器
PixelFormatAndAoiConfiguration.h
//包含一个设置像素数据格式和图像AOI的配置
SampleImageCreator.h
//包含创建示例图片的函数,有必要的话转换图像格式为目标格式
DeviceRemovalHandling
//说明如何获得相机设备移除通知及如何重新连接一个移除的设备
Grab
//说明如何使用CInstantCamera类来抓取和处理图像,图像抓取和处理同步进行
Grab_CameraEvents
//说明在相机事件消息收到之后怎么被通知,这些事件会被InstantCamera类自动检索和处理,这些被事件消息装载的信息会在相机节点地图里以参数节点的形式予以公开
Grab_ChunkImage
//如何使用块特征,如何抓取图像及如何处理这些额外的数据。当相机处于分块模式时,它会传输被分为分块的数据块
Grab_MultiCast
//说明以多播模式打开一个相机,以及如何接收一个多播流。实例必须在不同的电脑上同时开始
Grab_MultipleCameras
//说明使用 ClnstantCameraArray 类从多个相机抓取和处理图像的方法。ClnstantCameraArray 类表示当前相机设备对象的一个数组,它提供和 instant camera 基本一致的用于图像抓取的接口
Grab_Strategies
//说明当前相机抓取策略的使用
Grab_UsingExposureEndEvent
//说明如何使用 Exposure End 事件加速图像获取的方法
Grab_UsingGrabLoopThread
//说明使用 Instant Camera 相机类提供的抓取循环线程抓取和处理图像的方法。
Grab_UsingSequencer
//用于展示使用相机的序列特征抓取图像的方法
GUI_ImageWindow
//说明使用 cpylonImageWindow类显示图像的方式。在此,图像被抓取,分割成多个分片,每个分片在独立窗口显示
ParametrizeCamera_AutoFunctions
开发步骤
https://blog.csdn.net/weixin_44840658/article/details/89325995
1、首先需要初始化Pylon,即调用PylonInitialize();
2、在一个try{} catch(){}语句中进行打开相机的相关操作。
3、调用相机的传输层工厂类定义一个工厂类的引用,并初始化它,也就是CTlFactory& tlFactory = CTlFactory::GetInstance();
4、得到所有连接的pylon相机,DeviceInfoList_t devices; tlFactory.EnumerateDevices(devices);
5、创建一个相机实例数组,CInstantCameraArray cameras(min(devices.size(), c_maxCamerasToUse));
6、在一个for循环当中把所有检测到的相机附加到相机实例数组当中,cameras[i].Attach(tlFactory.CreateDevice(device[i]));
7、两个相机开始抓取图像,病定义一个存取抓取结果的变量,cameras.StartGrabbing(); CGrabResultPtr ptrGrabResult;
8、for循环控制抓取的图片数量,在循环内定义一个可以标志相机序列的变量,然后通过cameras数组访问相机的相关数据即可
9、最后终止Pylon相机,即调用PylonTerminate
#include <pylon/PylonIncludes.h>
using namespace Pylon;
using namespace std;
static const uint32_t c_countOfImagesToGrab = 10;
static const size_t c_maxCamerasToUse = 2;
int main(int argc, char* argv[])
{
int exitCode = 0;
PylonInitialize();
try {
CTlFactory& tlFactory = CTlFactory::GetInstance();
DeviceInfoList_t devices; if ( tlFactory.EnumerateDevices(devices) == 0 )
{
throw RUNTIME_EXCEPTION( “No camera present.”);
}
CInstantCameraArray cameras( min( devices.size(), c_maxCamerasToUse));
cout << "devices.size(): " << devices.size() << endl;
for ( size_t i = 0; i < cameras.GetSize(); ++i)
{
cameras[ i ].Attach( tlFactory.CreateDevice( devices[ i ]));
cout << "Using device " << cameras[ i ].GetDeviceInfo().GetModelName() << endl;
}
for( uint32_t i = 0; i < c_countOfImagesToGrab && cameras.IsGrabbing(); ++i)
{
cameras.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);
intptr_t cameraContextValue = ptrGrabResult->GetCameraContext();
cout << "Camera " << cameraContextValue << ": " << cameras[ cameraContextValu].GetDeviceInfo().GetModelName() << endl;
cout << "GrabSucceeded: " << ptrGrabResult->GrabSucceeded() << endl;
cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;
cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;
const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer();
cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl;
}
}
catch (const GenericException &e)
{
cerr << “An exception occurred.” << endl << e.GetDescription() << endl;
exitCode = 1;
}
cerr << endl << “Press Enter to exit.” << endl;
while( cin.get() != ‘\n’);
PylonTerminate(); return exitCode;
}
硬件接口
机械图纸https://www.baslerweb.com/cn/sales-support/downloads/document-downloads/basler-ace-usb3-c-mount-cad-technical-drawing/
3D打印支架https://www.baslerweb.com/cn/sales-support/downloads/document-downloads/blaze-ace-mounting-bracket-step-stl-model/
| 引脚 | 线路 | 功能 |
|---|---|---|
| 1 | Line 3 | 通用 I/O (GPIO) 线路 |
| 2 | Line 1 | 光电耦合 I/O 输入线路 |
| 3 | Line 4 | 通用 I/O (GPIO) 线路 |
| 4 | Line 2 | 光电耦合 I/O 输出线路 |
| 5 | - | 光电耦合 I/O 线路接地 |
| 6 | - | 通用 I/O (GPIO) 线路接地 |
光电耦合输入电路
GPIO 输入线路
https://zh.docs.baslerweb.com/circuit-diagrams-(ace)
https://zh.docs.baslerweb.com/aca1300-200uc#general-purpose-io-lines
https://blog.csdn.net/IntegralforLove/article/details/94722689
Basler acA1300-200uc相机使用教程的更多相关文章
- ROS与深度相机入门教程-在ROS使用kinect v1摄像头
ROS与深度相机入门教程-在ROS使用kinect v1摄像头 说明: 介绍在ros安装和使用kinect v1摄像头 介绍freenect包 安装驱动 deb安装 $ sudo apt-get in ...
- 关于basler线阵相机和Mtrox采集卡的安装
说明: 本系列博文是我自己研究生课题,采用做一步记录一步,在论文答辩结束或者机器设计结束之后才会附上源代码! 以前都是用opencv,直接拿个照片去处理,基本都是软件的使用,这次做课题要用到Matro ...
- 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤
相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716) http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...
- Pylon5 SDK搭配OpenCV使用入门
本文假设已经安装了Basler官网提供的Pylon 目前最新的版本是5.0.5,如果上述链接打不开,请直接所有Basler官网下载,需要注意的是在安装Pylon5时要选择Developer模式,这样才 ...
- 深度相机Astra Pro测试教程
最近在微信群内,很多群友在群友的推荐下,购买了Astra pro的深度相机,价格地道,物超所值!群友反馈积极,所以这里出一波简单的教程. 以下内容知识抛砖引玉,主要讲解windows下和Ubunt ...
- 【技术贴】三星Note8 N5100实用教程,关闭相机快门声,增加浏览器退出按钮。
需要root 增加快门声按钮: 在\system\csc\目录下,有个others.xml的手机功能定制文件,用root explorer之类可以修改系统文件权限的文本修改工具编辑它,在文件最末添加这 ...
- basler 相机拍照简单类综合Emgu.CV---得到图档
在网上找了半天都是下载要钱,自己试做了,经测试能ok,一起分享吧.给初学的人一点鼓励. using System;using System.Collections.Generic;using Syst ...
- DALSA相机SDK不完全教程
1.SDK介绍 Dalsa是全球顶尖的CCD/CMOS芯片和相机制造商,总部位于加拿大,我使用的是 Dalsa的 Genie_TS_M1920(黑白)和 Genie_TS_C2048(彩色)两款工业相 ...
- Opencv 张正友相机标定傻瓜教程
注: 程序所用的OpenCV版本是 2.4.10 ,3.0以上的版本可能会有不同 先贴一下完整的工程代码: #include "opencv2/core/core.hpp" #in ...
随机推荐
- linux 运维工程师如何降低工作难度
文章目录 1.Linux "优化" 2.git "优化" 3.mysql "优化" 4.kubernetes "优化" ...
- 016 Linux 卧槽,看懂进程信息也不难嘛?top、ps
目录 1 扒开看看 top 命令参数详情 第一行,[top - ]任务队列信息 第二行,[Tasks] 任务(进程) 第三行,[Cpu(s)]状态信息 第四行,[Mem]内存状态 第五行,[Swap] ...
- Java的泛型机制
Java的泛型机制 泛型是 Java 从 JDK5 开始引入的新特性,本质上是参数化类型,即所操作的数据类型被指定为一个参数.这意味着编写的代码可以被很多不同类型的对象所重用. 1. 泛型的使用方式 ...
- python2发微信脚本
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib,urllib2,json import sys reload(sys) sys. ...
- pytest(3)-测试命名规则
前言 在自动化测试项目中,单元测试框架运行时需要先搜索测试模块(即测试用例所在的.py文件),然后在测试模块中搜索测试类或测试函数,接着在测试类中搜索测试方法,最后加入到队列中,再按执行顺序执行测试. ...
- 关于Dll、Com组件、托管dll和非托管dll
转自:https://blog.csdn.net/black_bad1993/article/details/53906252 Com组件 1.线程模型是干嘛用的?解决"多个线程" ...
- Windows三种文件系统:NTFS、FAT32、FAT16的区别
什么是文件系统? 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构:即在磁盘上组织文件的方法.也指用于存储文件的磁盘或分区,或文件系统种类. 举个通俗的比喻,一块硬盘就像一个块空地,文件就 ...
- 举例说明EF CORE中模型之间的一对多、多对多关系的实现
该例子是我临时想出来的,不具有任何的实际意义.类图如图1所示. 图1 类代码: [Table("student")] public class Student { public i ...
- GNS3与抓包工具Wireshark的关联
转至:https://blog.51cto.com/xpleaf/1615145 (一)前言 本博文分享GNS3与Wireshark关联的方法. 显然现在网络上已经有类似的文章分享,而本博文旨在提供更 ...
- Linux实时查看日志的四种命令详解
转至:https://blog.csdn.net/qq_33223299/article/details/93773989 如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文 ...