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相机使用教程的更多相关文章

  1. ROS与深度相机入门教程-在ROS使用kinect v1摄像头

    ROS与深度相机入门教程-在ROS使用kinect v1摄像头 说明: 介绍在ros安装和使用kinect v1摄像头 介绍freenect包 安装驱动 deb安装 $ sudo apt-get in ...

  2. 关于basler线阵相机和Mtrox采集卡的安装

    说明: 本系列博文是我自己研究生课题,采用做一步记录一步,在论文答辩结束或者机器设计结束之后才会附上源代码! 以前都是用opencv,直接拿个照片去处理,基本都是软件的使用,这次做课题要用到Matro ...

  3. 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤

    相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716)  http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...

  4. Pylon5 SDK搭配OpenCV使用入门

    本文假设已经安装了Basler官网提供的Pylon 目前最新的版本是5.0.5,如果上述链接打不开,请直接所有Basler官网下载,需要注意的是在安装Pylon5时要选择Developer模式,这样才 ...

  5. 深度相机Astra Pro测试教程

    最近在微信群内,很多群友在群友的推荐下,购买了Astra pro的深度相机,价格地道,物超所值!群友反馈积极,所以这里出一波简单的教程.   以下内容知识抛砖引玉,主要讲解windows下和Ubunt ...

  6. 【技术贴】三星Note8 N5100实用教程,关闭相机快门声,增加浏览器退出按钮。

    需要root 增加快门声按钮: 在\system\csc\目录下,有个others.xml的手机功能定制文件,用root explorer之类可以修改系统文件权限的文本修改工具编辑它,在文件最末添加这 ...

  7. basler 相机拍照简单类综合Emgu.CV---得到图档

    在网上找了半天都是下载要钱,自己试做了,经测试能ok,一起分享吧.给初学的人一点鼓励. using System;using System.Collections.Generic;using Syst ...

  8. DALSA相机SDK不完全教程

    1.SDK介绍 Dalsa是全球顶尖的CCD/CMOS芯片和相机制造商,总部位于加拿大,我使用的是 Dalsa的 Genie_TS_M1920(黑白)和 Genie_TS_C2048(彩色)两款工业相 ...

  9. Opencv 张正友相机标定傻瓜教程

    注: 程序所用的OpenCV版本是 2.4.10 ,3.0以上的版本可能会有不同 先贴一下完整的工程代码: #include "opencv2/core/core.hpp" #in ...

随机推荐

  1. 我们一起来学Shell - 初识shell

    文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...

  2. c++ struct enum union加typedef与不加typedef

    struct/enum/union加typedef与不加typedef 匿名结构体 struct { int a; int b; } v; // 这里表示定义了一个结构体的变量v,且结构体类型没有名字 ...

  3. Dubbo源码剖析二之注册中心

    Dubbo基础二之架构及处理流程概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中架构中,无论是服务提供者还是服务消费者都离不开注册中心,可见注册中心之重要.Redis.Nacos. ...

  4. java实现 TCP通信

    //服务端import com.hl.bluetooth.util.CRC16; import com.hl.bluetooth.util.FrameCheckFailedException; imp ...

  5. 《手把手教你》系列技巧篇(六十九)-java+ selenium自动化测试 - 读取csv文件(详细教程)

    1.简介 在实际测试中,我们不仅需要读取Excle,而且有时候还需要读取CSV类的文件.如何去读取CSV的文件,宏哥今天就讲解和分享一下,希望对你能够有所帮助.前面介绍了如何读取excel文件,本篇介 ...

  6. 已经安装的nginx增加额外配置步骤

    这里以安装第三方ngx_http_google_filter_module模块为例nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so1. 下载第三方扩展模块ngx_h ...

  7. NSSCTF-[UTCTF 2020]Zero

    做misc嘛,先把题目一开始就给的一串英文翻译一下, 可以看到说明的是这个txt文档可能是包含其他的文本量,这个文本里面还有其他的东西,只是正常是看不到, 使用binwalk或者fomost分离尝试, ...

  8. centos7 配置nginx

    安装是需要的环境 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ 二. PCR ...

  9. 什么是NFT?

    我有一个年轻朋友,最近买了一个数字艺术品,9百多入手,几周后卖掉,赚了7万多,他告诉我这个东西叫NFT. 2021年twitter创始人杰克.多西将自己发布的第一条twitter通过NFT以250万美 ...

  10. go 中 sort 如何排序,源码解读

    sort 包源码解读 前言 如何使用 基本数据类型切片的排序 自定义 Less 排序比较器 自定义数据结构的排序 分析下源码 不稳定排序 稳定排序 查找 Interface 总结 参考 sort 包源 ...