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. pytest(10)-常用执行参数说明

    pytest单元测试框架中可以使用命令行及代码pytest.main()两种方式执行测试,且可以加入各种参数来组织执行测试.接下来我们来了解常用的执行参数的含义及其用法. pytest中的执行参数根据 ...

  2. pypi服务器搭建

    pypi服务器搭建 [root@localhost ~]# hostnamectl set-hostname --static pypi-server [root@pypi-server ~]# yu ...

  3. Solon 1.6.25 发布,轻量级应用开发框架

    关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web.Data.Jo ...

  4. Kubernetes集群使用CentOS 7.6系统时kubelet日志含有“Reason:KubeletNotReady Message:PLEG is not healthy:”信息

    问题描述 Kubernetes集群使用CentOS 7.6版本的系统时,kubelet日志中可能存在以下告警信息. Reason:KubeletNotReady Message:PLEG is not ...

  5. .NET NuGet整理

    分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的K ...

  6. kyverno VS gateKeeper

    kyverno VS gateKeeper 概述 这两组开源工具都是是基于kubernetes 的webhook机制,支持validatingwebhook和mutatingwebhook.整体思路上 ...

  7. 图解CPU缓存一致性问题

    产生背景 CPU的读取速度比内存的快,一个快一个慢,就会有矛盾,就会有人想要解决这个矛盾,所以就提出多级缓存来解决,如下图所示. L1级缓存:分为数据域和程序域. L2级缓存:二级缓存.  L3级缓存 ...

  8. HTML分块

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟 ...

  9. python post请求中Content-Typ为application/x-www-form-urlencoded; charset=UTF-8 解决方案

    # -*- coding: utf-8 -*- import requests import json from urllib import parse import quotes def GtgLo ...

  10. List分组和排序

    1 //分组 2 var ll= lst.GroupBy(x => new { x.Id, x.Name }).Select(x => new 3 { 4 Key = x.Key, 5 I ...