Qt(C++)调用工业相机Basler的SDK使用示例 您所在的位置:网站首页 basler工业相机怎么连接 Qt(C++)调用工业相机Basler的SDK使用示例

Qt(C++)调用工业相机Basler的SDK使用示例

2023-11-02 14:41| 来源: 网络整理| 查看: 265

简介

由于公司采购的AVT相机不足,需要用Basler相机来弥补,所以我也了解了一下Basler这款相机的SDK。由于Basler这边的相机提供的没有提供Qt的示例,所以我做一个分享出来。

本篇的Demo采用的是工业黑白相机。工业应用中,如果我们要处理的是与图像颜色有关,那么我们最好采用彩色工业相机;如果不是,那么我们最好选用黑白工业相机,因为在同样分辨率下的工业相机,黑白工业教学精度比彩色工业相机高,尤其是在看图像边缘的时候,黑白工业相机的效果更好。

开发环境

Qt:  5.6.2vc2013版 

Basler:  5.0.11版

效果图

 

上图只是做了SDK部分接口的获取和设置。相机的触发方式、曝光时间、增益、频率,以及图片的尺寸、灯的触发信号等。

Basler相机SDK接口调用控制类 #ifndef SBASLERCAMERACONTROL_H #define SBASLERCAMERACONTROL_H #include #include #include #include #define DOUBLE_MAX 100000 #define DOUBLE_MIN 0 using namespace std; using namespace Pylon; using namespace GenApi; class SBaslerCameraControl : public QObject { Q_OBJECT public: explicit SBaslerCameraControl(QObject *parent = 0); ~SBaslerCameraControl(); enum SBaslerCameraControl_Type{ Type_Basler_Freerun, //设置相机的内触发 Type_Basler_Line1, //设置相机的外触发 Type_Basler_ExposureTimeAbs, //设置相机的曝光时间 Type_Basler_GainRaw, //设置相机的增益 Type_Basler_AcquisitionFrameRateAbs, //设置相机的频率 Type_Basler_Width, //图片的宽度 Type_Basler_Height, //图片的高度 Type_Basler_LineSource, //灯的触发信号 }; void initSome(); void deleteAll(); QStringList cameras(); int OpenCamera(QString cameraSN); int CloseCamera(); void setExposureTime(double time); // 设置曝光时间 int getExposureTime(); // 获取曝光时间 int getExposureTimeMin(); // 最小曝光时间 int getExposureTimeMax(); // 最大曝光时间 void setFeatureTriggerSourceType(QString type); // 设置种类 QString getFeatureTriggerSourceType(); // 获取种类:软触发、外触发等等 void setFeatureTriggerModeType(bool on); // 设置模式触发 bool getFeatureTriggerModeType(); // 获取模式触发 void SetCamera(SBaslerCameraControl::SBaslerCameraControl_Type index, double tmpValue = 0.0); // 设置各种参数 double GetCamera(SBaslerCameraControl::SBaslerCameraControl_Type index); // 获取各种参数 long GrabImage(QImage& image,int timeout = 2000); long StartAcquire(); // 开始采集 long StopAcquire(); // 结束采集 signals: void sigCameraUpdate(QStringList list); void sigSizeChange(QSize size); void sigCameraCount(int count); void sigCurrentImage(QImage img); private: void UpdateCameraList(); void CopyToImage(CGrabResultPtr pInBuffer, QImage &OutImage); private slots: void onTimerGrabImage(); private: CInstantCamera m_basler; QStringList m_cameralist; QString m_currentMode; bool m_isOpenAcquire = false; // 是否开始采集 bool m_isOpen = false; // 是否打开摄像头 QSize m_size; }; #endif // SBASLERCAMERACONTROL_H

源文件:

#include "sbaslercameracontrol.h" #include #include SBaslerCameraControl::SBaslerCameraControl(QObject *parent) : QObject(parent) { } SBaslerCameraControl::~SBaslerCameraControl() { } void SBaslerCameraControl::initSome() { qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有