0.程序运行效果

1.工程文件

#-------------------------------------------------
#
# Project created by QtCreator 2022-10-27T11:46:55
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = SaperaGigEVisionCameraDemo
TEMPLATE = app# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0CONFIG += c++11SOURCES += \dalsacamera.cpp \main.cpp \dalsacamerawidget.cppHEADERS += \dalsacamera.h \dalsacamerawidget.hFORMS += \dalsacamerawidget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetRESOURCES += \images.qrcINCLUDEPATH += "C:/Program Files/Teledyne DALSA/Sapera/Include"
INCLUDEPATH += "C:/Program Files/Teledyne DALSA/Sapera/Classes/Basic"LIBS += "C:/Program Files/Teledyne DALSA/Sapera/Lib/Win64/corapi.lib"
LIBS += "C:/Program Files/Teledyne DALSA/Sapera/Lib/Win64/SapClassBasic.lib"INCLUDEPATH += C:\opencv\build\include
QMAKE_LIBDIR  += "C:/opencv/build/x64/vc15/lib"
win32:LIBS    += "C:/opencv/build/x64/vc15/lib/opencv_world453d.lib" \"C:/opencv/build/x64/vc15/lib/opencv_world453.lib"

2. 相机类文件

//dalsacamera.h

#ifndef DALSACAMERA_H
#define DALSACAMERA_H#include <QObject>#include "SapClassBasic.h"#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#if (CV_MAJOR_VERSION >= 3)#include "opencv2/videoio/videoio.hpp"
#endif#include <opencv2/opencv.hpp>using namespace cv;typedef struct
{double  dGain;double  dExpoureTime;double  dLineRate;BOOL    bTriggerMode;UINT32  nWidth;UINT32  nHeight;UINT32  nOffsetX;
} CONSTANTLY_CHANGING_PARAMS;class DalsaCamera : public QObject
{Q_OBJECT
public:explicit DalsaCamera(QObject *parent = nullptr, QString servername = QString("Linea_M4096-7um_1"));~DalsaCamera();BOOL CreateObjects();BOOL DestroyObjects();void OnGrab();void OnSnap();void OnFreeze();static void XferCallback(SapXferCallbackInfo *pInfo);protected://dalsa commonly used data structureSapAcqDevice *m_AcqDevice;SapBuffer      *m_Buffers;SapTransfer      *m_Xfer;//dalsa camera some feature and statusbool           m_isconnected;QString        m_SN;long           m_frameId;QString        m_servername;//dalsa configure file reletedbool           m_bUseConfigFile;QString        m_configureFileName;QString        m_configureFileDirectory;//constantly changing parameters, will show in GUICONSTANTLY_CHANGING_PARAMS m_objParameters;signals:void canShowImages(cv::Mat im);void signalSettingsChanged(CONSTANTLY_CHANGING_PARAMS camerafeatures);public slots://methods to support parameter operatorvoid saveSettings(CONSTANTLY_CHANGING_PARAMS camerafeatures);public:void initCamera();void destroyCamera();//methods to support parameter operatorvoid loadSettings();
};#endif // DALSACAMERA_H

//dalsacamera.cpp

#include "dalsacamera.h"
#include <QDebug>#include <iostream>
#include <string>
#include <stdio.h>DalsaCamera::DalsaCamera(QObject *parent, QString servername) : QObject(parent),m_AcqDevice(nullptr),m_Buffers(nullptr),m_Xfer(nullptr),m_isconnected(false),m_SN(""),m_frameId(0),m_servername(servername)
{initCamera();
}DalsaCamera::~DalsaCamera()
{destroyCamera();
}BOOL DalsaCamera::CreateObjects()
{// Create acquisition objectif (m_AcqDevice && !*m_AcqDevice && !m_AcqDevice->Create()){DestroyObjects();return FALSE;}// Create buffer objectif (m_Buffers && !*m_Buffers){if( !m_Buffers->Create()){DestroyObjects();return FALSE;}// Clear all buffersm_Buffers->Clear();}// Set next empty with trash cycle mode for transferif (m_Xfer && m_Xfer->GetPair(0)){if (!m_Xfer->GetPair(0)->SetCycleMode(SapXferPair::CycleNextWithTrash)){DestroyObjects();return FALSE;}}// Create transfer objectif (m_Xfer && !*m_Xfer && !m_Xfer->Create()){DestroyObjects();return FALSE;}return TRUE;
}BOOL DalsaCamera::DestroyObjects()
{// Destroy transfer objectif (m_Xfer && *m_Xfer) m_Xfer->Destroy();// Destroy buffer objectif (m_Buffers && *m_Buffers) m_Buffers->Destroy();// Destroy acquisition objectif (m_AcqDevice && *m_AcqDevice) m_AcqDevice->Destroy();return TRUE;
}void DalsaCamera::XferCallback(SapXferCallbackInfo *pInfo)
{qDebug() << "Call back function called successfully!" << endl;DalsaCamera *pDlg = (DalsaCamera *)pInfo->GetContext();pDlg->m_frameId++;BYTE byteData;void *pData = &byteData;bool success=pDlg->m_Buffers->GetAddress(&pData);if (!success){return;}int width = pDlg->m_Buffers->GetWidth();int height = pDlg->m_Buffers->GetHeight();cv::Mat im=cv::Mat(height,width,CV_8UC1,(uchar*)pData).clone();cv::GaussianBlur(im,im,cv::Size(3,3),1);//show image or send image to handleemit pDlg->canShowImages(im);pDlg->m_Buffers->ReleaseAddress((void*)pData);pDlg->m_Buffers->Clear(pDlg->m_Buffers->GetIndex());
}void DalsaCamera::initCamera()
{SapLocation loc(m_servername.toLatin1().data(), 0);m_AcqDevice = new SapAcqDevice(loc, FALSE);m_Buffers = new SapBufferWithTrash(3, m_AcqDevice);m_Xfer = new SapAcqDeviceToBuf(m_AcqDevice,m_Buffers,XferCallback,this);if (CreateObjects() == true){qDebug() << "Camera connected successfully!" << endl;char featureStringValue[64];m_AcqDevice->GetFeatureValue("DeviceSerialNumber",featureStringValue,sizeof(featureStringValue));QString str(featureStringValue);m_SN=str;m_isconnected=true;}
}void DalsaCamera::destroyCamera()
{if(m_Xfer->IsGrabbing())m_Xfer->Freeze();DestroyObjects();if (m_Xfer)        delete m_Xfer;if (m_Buffers)  delete m_Buffers;if (m_AcqDevice)     delete m_AcqDevice;
}void DalsaCamera::OnGrab()
{if(m_Xfer){m_Xfer->Grab();}
}void DalsaCamera::OnSnap()
{if(m_Xfer){m_Xfer->Snap();}
}void DalsaCamera::OnFreeze()
{if(m_Xfer){m_Xfer->Freeze();}
}void DalsaCamera::loadSettings()
{if (m_AcqDevice){m_AcqDevice->GetFeatureValue("Gain",&m_objParameters.dGain);m_AcqDevice->GetFeatureValue("ExposureTime",&m_objParameters.dExpoureTime);m_AcqDevice->GetFeatureValue("AcquisitionLineRate",&m_objParameters.dLineRate);m_AcqDevice->GetFeatureValue("TriggerMode",&m_objParameters.bTriggerMode);m_AcqDevice->GetFeatureValue("Width",&m_objParameters.nWidth);m_AcqDevice->GetFeatureValue("Height",&m_objParameters.nHeight);m_AcqDevice->GetFeatureValue("OffsetX",&m_objParameters.nOffsetX);emit signalSettingsChanged(m_objParameters);}
}void DalsaCamera::saveSettings(CONSTANTLY_CHANGING_PARAMS camerafeatures)
{std::memcpy(&m_objParameters,&camerafeatures, sizeof(CONSTANTLY_CHANGING_PARAMS));if (m_AcqDevice){m_AcqDevice->SetUpdateFeatureMode(SapAcqDevice::UpdateFeatureManual);m_AcqDevice->SetFeatureValue("Gain",m_objParameters.dGain);m_AcqDevice->SetFeatureValue("ExposureTime",m_objParameters.dExpoureTime);m_AcqDevice->SetFeatureValue("AcquisitionLineRate",m_objParameters.dLineRate);m_AcqDevice->SetFeatureValue("TriggerMode",m_objParameters.bTriggerMode);m_AcqDevice->SetFeatureValue("Width",m_objParameters.nWidth);m_AcqDevice->SetFeatureValue("Height",m_objParameters.nHeight);m_AcqDevice->SetFeatureValue("OffsetX",m_objParameters.nOffsetX);m_AcqDevice->UpdateFeaturesToDevice();m_AcqDevice->SetUpdateFeatureMode(SapAcqDevice::UpdateFeatureAuto);}
}

//窗口主程序

#ifndef DALSACAMERAWIDGET_H
#define DALSACAMERAWIDGET_H#include <QWidget>
#include "dalsacamera.h"namespace Ui {
class DalsaCameraWidget;
}class DalsaCameraWidget : public QWidget
{Q_OBJECTenum ServerCategory{ServerAll,ServerAcq,ServerAcqDevice};public:explicit DalsaCameraWidget(QWidget *parent = nullptr);~DalsaCameraWidget();private slots:void on_pushButton_Exit_clicked();void on_pushButton_snap_clicked();void on_pushButton_grab_clicked();void on_pushButton_freeze_clicked();void showImages(cv::Mat im);void updateFeaturesOnGUI(CONSTANTLY_CHANGING_PARAMS camerafeatures);void on_pushButton_OK_clicked();void on_comboBoxServer_currentIndexChanged(int index);void on_comboBox_trigmode_currentIndexChanged(int index);private:Ui::DalsaCameraWidget *ui;ServerCategory m_serverCategory;bool m_bShowCameraLinkServers;int m_resourceIndex;bool bCameraChanged;QString m_serverName;void InitServerCombo();void InitResourceCombo();void loadSettings();void saveSettings(CONSTANTLY_CHANGING_PARAMS camerafeatures);DalsaCamera* dcam;
//    DalsaCamera dcam;};#endif // DALSACAMERAWIDGET_H

//dalsawidget.cpp

#include "dalsacamerawidget.h"
#include "ui_dalsacamerawidget.h"#include <QDebug>DalsaCameraWidget::DalsaCameraWidget(QWidget *parent) :QWidget(parent),ui(new Ui::DalsaCameraWidget),m_serverCategory(ServerAcqDevice),m_bShowCameraLinkServers(false),m_resourceIndex(-1),bCameraChanged(false),dcam(nullptr)
{ui->setupUi(this);InitServerCombo();InitResourceCombo();dcam =  new DalsaCamera(NULL, m_serverName);qRegisterMetaType<cv::Mat>("cv::Mat");qRegisterMetaType<CONSTANTLY_CHANGING_PARAMS>("constantly_changing_params");connect(dcam, SIGNAL(canShowImages(cv::Mat)),this, SLOT(showImages(cv::Mat)));connect(dcam, SIGNAL(signalSettingsChanged(CONSTANTLY_CHANGING_PARAMS)),this, SLOT(updateFeaturesOnGUI(CONSTANTLY_CHANGING_PARAMS)));loadSettings();
}DalsaCameraWidget::~DalsaCameraWidget()
{delete ui;}void DalsaCameraWidget::on_pushButton_Exit_clicked()
{this->close();
}void DalsaCameraWidget::on_pushButton_snap_clicked()
{qDebug() << "snap clicked!" << endl;if (dcam != NULL)dcam->OnSnap();
//    dcam.OnSnap();
}void DalsaCameraWidget::on_pushButton_grab_clicked()
{qDebug() << "grab clicked!" << endl;if (dcam != NULL)dcam->OnGrab();
//    dcam.OnGrab();
}void DalsaCameraWidget::on_pushButton_freeze_clicked()
{qDebug() << "freeze clicked!" << endl;if (dcam != NULL)dcam->OnFreeze();
//    dcam.OnFreeze();
}void DalsaCameraWidget::showImages(Mat im)
{QImage img = QImage((const unsigned char*)(im.data),im.cols, im.rows, QImage::Format_Mono);img = img.scaled(ui->label_image->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);ui->label_image->setPixmap(QPixmap::fromImage(img));
}void DalsaCameraWidget::InitServerCombo()
{for (int i = 0; i < SapManager::GetServerCount(); i++){if (!SapManager::IsServerAccessible(i))continue;// Does this server support "Acq" (frame-grabber) or "AcqDevice" (camera)?bool bAcq = (m_serverCategory == ServerAcq || m_serverCategory == ServerAll)&& (SapManager::GetResourceCount(i, SapManager::ResourceAcq) > 0);// when m_serverCategory is ServerAcqDevice, show only servers that have only one resource that is an acqdevice and no acqbool bAcqDevice = (m_serverCategory == ServerAcqDevice || m_serverCategory == ServerAll)&& (SapManager::GetResourceCount(i, SapManager::ResourceAcqDevice) == 1) && (SapManager::GetResourceCount(i, SapManager::ResourceAcq) == 0);if (bAcq || bAcqDevice || m_bShowCameraLinkServers){char name[128];if (SapManager::GetServerName(i, name, sizeof(name))){if (strstr(name, "CameraLink_") != NULL){if (bAcq || m_bShowCameraLinkServers)ui->comboBoxServer->addItem(name);}// Exclude Z-Trak from the server listelse if (strstr(name, "LP1") == NULL && strstr(name, "LP2") == NULL){// Add server name to comboui->comboBoxServer->addItem(name);}}}}// At least one server must be availableif (ui->comboBoxServer->count() <= 0){return;}// Select server nameif(ui->comboBoxServer->findText(m_serverName) == -1){// If not found, select first oneui->comboBoxServer->setCurrentIndex(0);m_serverName = ui->comboBoxServer->currentText();}
}void DalsaCameraWidget::InitResourceCombo()
{int i = 0;// Clear combo contentui->comboBoxResource->clear();// Check if the server name is present on the systemif (SapManager::GetServerIndex(m_serverName.toLatin1().data()) != SapLocation::ServerUnknown){// Add "Acq" resources (frame-grabbers) to combofor (i = 0; i < SapManager::GetResourceCount(m_serverName.toLatin1().data(), SapManager::ResourceAcq); i++){char name[128];if (SapManager::GetResourceName(m_serverName.toLatin1().data(), SapManager::ResourceAcq, i, name, sizeof(name)))if (SapManager::IsResourceAvailable(m_serverName.toLatin1().data(), SapManager::ResourceAcq, i) == FALSE)CorSnprintf(name, sizeof(name), "%s", "Not Available - Resource In Use");ui->comboBoxResource->addItem(name);}// Add "AcqDevice" resources (cameras) to combo only if there are no frame grabber resourcesif (SapManager::GetResourceCount(m_serverName.toLatin1().data(), SapManager::ResourceAcq) == 0){for (i = 0; i < SapManager::GetResourceCount(m_serverName.toLatin1().data(), SapManager::ResourceAcqDevice); i++){char name[128];if (SapManager::GetResourceName(m_serverName.toLatin1().data(), SapManager::ResourceAcqDevice, i, name, sizeof(name)))ui->comboBoxResource->addItem(name);}}}// Select resource indexif(m_resourceIndex < ui->comboBoxResource->count() && m_resourceIndex >=0){ui->comboBoxResource->setCurrentIndex(m_resourceIndex);} else{// If not found, select first oneui->comboBoxResource->setCurrentIndex(0);m_resourceIndex = 0;}
}void DalsaCameraWidget::on_pushButton_OK_clicked()
{CONSTANTLY_CHANGING_PARAMS camerafeatures;camerafeatures.dGain = ui->lineEdit_gain->text().toDouble();camerafeatures.dExpoureTime = ui->lineEdit_exposure->text().toDouble();camerafeatures.dLineRate = ui->lineEdit_lineRate->text().toDouble();if(ui->comboBox_trigmode->currentIndex() == 0){camerafeatures.bTriggerMode = false;} else{camerafeatures.bTriggerMode = true;}camerafeatures.nWidth = ui->lineEdit_width->text().toUInt();camerafeatures.nHeight = ui->lineEdit_height->text().toUInt();camerafeatures.nOffsetX = ui->lineEdit_xoffset->text().toUInt();saveSettings(camerafeatures);
}void DalsaCameraWidget::on_comboBoxServer_currentIndexChanged(int index)
{ui->comboBoxServer->setCurrentIndex(index);QString tmpServerName = ui->comboBoxServer->currentText();if (m_serverName != tmpServerName){m_serverName = tmpServerName;if (dcam != NULL) {disconnect(dcam, SIGNAL(canShowImages(cv::Mat)),this, SLOT(showImages(cv::Mat)));disconnect(dcam, SIGNAL(signalSettingsChanged(CONSTANTLY_CHANGING_PARAMS)),this, SLOT(updateFeaturesOnGUI(CONSTANTLY_CHANGING_PARAMS)));delete dcam;dcam =  new DalsaCamera(NULL, m_serverName);connect(dcam, SIGNAL(canShowImages(cv::Mat)),this, SLOT(showImages(cv::Mat)));connect(dcam, SIGNAL(signalSettingsChanged(CONSTANTLY_CHANGING_PARAMS)),this, SLOT(updateFeaturesOnGUI(CONSTANTLY_CHANGING_PARAMS)));}}InitResourceCombo();loadSettings();
}void DalsaCameraWidget::on_comboBox_trigmode_currentIndexChanged(int index)
{ui->comboBox_trigmode->setCurrentIndex(index);
}void DalsaCameraWidget::loadSettings()
{if (dcam != NULL){dcam->loadSettings();}
}void DalsaCameraWidget::saveSettings(CONSTANTLY_CHANGING_PARAMS camerafeatures)
{if (dcam != NULL){dcam->saveSettings(camerafeatures);}
}void DalsaCameraWidget::updateFeaturesOnGUI(CONSTANTLY_CHANGING_PARAMS camerafeatures)
{ui->lineEdit_gain->setText(QString::number(camerafeatures.dGain));ui->lineEdit_exposure->setText(QString::number(camerafeatures.dExpoureTime));ui->lineEdit_lineRate->setText(QString::number(camerafeatures.dLineRate));if(camerafeatures.bTriggerMode == true){ui->comboBox_trigmode->setCurrentIndex(1);} else{ui->comboBox_trigmode->setCurrentIndex(0);}ui->lineEdit_width->setText(QString::number(camerafeatures.nWidth));ui->lineEdit_height->setText(QString::number(camerafeatures.nHeight));ui->lineEdit_xoffset->setText(QString::number(camerafeatures.nOffsetX));
}

4. 主程序

#include "dalsacamerawidget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);DalsaCameraWidget w;w.show();return a.exec();
}

5. 界面文件xml格式

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>DalsaCameraWidget</class><widget class="QWidget" name="DalsaCameraWidget"><property name="geometry"><rect><x>0</x><y>0</y><width>741</width><height>505</height></rect></property><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Expanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="windowTitle"><string>Sapera GigE-Vision Camera Demo</string></property><layout class="QHBoxLayout" name="horizontalLayout_4"><item><widget class="QLabel" name="label_dalsalogo"><property name="text"><string/></property><property name="pixmap"><pixmap resource="images.qrc">:/image/images/DalsaBanner.bmp</pixmap></property></widget></item><item><layout class="QVBoxLayout" name="verticalLayout_6" stretch="1,5"><item><layout class="QHBoxLayout" name="horizontalLayout_2"><property name="sizeConstraint"><enum>QLayout::SetDefaultConstraint</enum></property><item><widget class="QGroupBox" name="groupBox_acqcontrol"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Preferred"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="title"><string>Acquisition Control</string></property><layout class="QHBoxLayout" name="horizontalLayout"><item><widget class="QPushButton" name="pushButton_snap"><property name="text"><string>Snap</string></property></widget></item><item><widget class="QPushButton" name="pushButton_grab"><property name="text"><string>Grab</string></property></widget></item><item><widget class="QPushButton" name="pushButton_freeze"><property name="text"><string>Freeze</string></property></widget></item></layout></widget></item><item><spacer name="horizontalSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>68</width><height>20</height></size></property></spacer></item><item><widget class="QPushButton" name="pushButton_OK"><property name="text"><string>OK</string></property></widget></item><item><widget class="QPushButton" name="pushButton_Exit"><property name="text"><string>Exit</string></property></widget></item></layout></item><item><layout class="QHBoxLayout" name="horizontalLayout_3" stretch="1,4"><item><layout class="QVBoxLayout" name="verticalLayout_5" stretch="1,3"><item><widget class="QGroupBox" name="groupBox_config"><property name="title"><string>Acquistion Option</string></property><layout class="QVBoxLayout" name="verticalLayout_3"><item><widget class="QComboBox" name="comboBoxServer"/></item><item><widget class="QComboBox" name="comboBoxResource"/></item></layout></widget></item><item><widget class="QGroupBox" name="groupBox_settings"><property name="title"><string>General Settings</string></property><layout class="QGridLayout" name="gridLayout"><item row="0" column="0"><widget class="QLabel" name="label"><property name="text"><string>Gain</string></property></widget></item><item row="0" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_gain"><property name="text"><string>1</string></property></widget></item><item row="1" column="0"><widget class="QLabel" name="label_2"><property name="text"><string>Exposure</string></property></widget></item><item row="1" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_exposure"><property name="text"><string>50</string></property></widget></item><item row="2" column="0"><widget class="QLabel" name="label_3"><property name="text"><string>lineRate</string></property></widget></item><item row="3" column="0" colspan="2"><widget class="QLabel" name="label_4"><property name="text"><string>TrigMode</string></property></widget></item><item row="3" column="2"><widget class="QComboBox" name="comboBox_trigmode"><item><property name="text"><string>off</string></property></item><item><property name="text"><string>on</string></property></item></widget></item><item row="4" column="0"><widget class="QLabel" name="label_5"><property name="text"><string>Width</string></property></widget></item><item row="5" column="0"><widget class="QLabel" name="label_6"><property name="text"><string>Hight</string></property></widget></item><item row="5" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_height"><property name="text"><string>1024</string></property></widget></item><item row="6" column="0"><widget class="QLabel" name="label_7"><property name="text"><string>Xoffset</string></property></widget></item><item row="6" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_xoffset"><property name="text"><string>0</string></property></widget></item><item row="2" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_lineRate"><property name="text"><string>3333.33</string></property></widget></item><item row="4" column="1" colspan="2"><widget class="QLineEdit" name="lineEdit_width"><property name="text"><string>4096</string></property></widget></item></layout></widget></item></layout></item><item><layout class="QVBoxLayout" name="verticalLayout_4"><item><widget class="QLineEdit" name="lineEdit_status"/></item><item><widget class="QLabel" name="label_image"><property name="text"><string/></property></widget></item></layout></item></layout></item></layout></item></layout></widget><layoutdefault spacing="6" margin="11"/><resources><include location="images.qrc"/></resources><connections/>
</ui>

Qt版Dalsa线扫相机的采集Demo相关推荐

  1. Qt开发Dalsa线扫相机的采集显示程序

    dalsa官方给的Demo程序是基于MFC的,现在给出一个相对完整的QT工程,对dalsa一款线扫相机进行采集显示. 1. 程序运行结果 2. 工程文件 #---------------------- ...

  2. QT调用Dalsa线扫相机

    网上有很多dalsa相机的MFC的例子.笔者最近做项目用到dalsa线阵相机.学习了好几天.直接上代码: pro 文件: #-------------------------------------- ...

  3. Dalsa线扫相机开发文档

    目录 前言 相关资料的下载 参考的文档 前言 由于工作的需求,需要开发Dalsa下CameraLink类型的线扫相机,所以,在这做一些相应的记录,已防止遗忘. 相关资料的下载 最新SDK的下载 Mat ...

  4. Dalsa线扫相机固定IP配置

    Dalsa线扫相机配置-一台工控机同时连接多个GigE相机 如图,我强悍的工控机,有六个网口. 实际用的时候连了多台相机,为了偷懒我就把六个网口的地址分别设为192.168.0.1~192.168.0 ...

  5. 线扫相机DALSA-LACMDevice(采集卡)+Configure(相机配置)+Detection(查找相机)

    Device(采集卡) DALSA采集卡家族共有三大产品线:Xtium2.Xtium和Xcelera,其中我司常用的为Xtium-CL MX4系列采集卡,型号为OR-Y4CO-XMXOO:另外也少量使 ...

  6. dalsa线扫相机调试文档_线阵相机调试文档

    1.相机型号参数相机:线16k CL 分辨率:16384 x 1 像素大小:3.52 μm x 3.52 μm 麦克斯行费率:48 千赫 镜头安装(螺纹):M72 x 1 产品编号:LA-CM-16K ...

  7. Dalsa线扫相机SDK开发-小试牛刀(1)

    拿到了dalsa相机,可以用Sapera软件配置相机,进行图像采集.但是自己开发的话就得撸起袖子写代码了,查了两篇不错的博文,作为指导. Sapera帮助文档 - <好好先生>专栏 - 博 ...

  8. dalsa线扫相机调试文档_Dalsa线扫相机SDK开发-小试牛刀(1)

    拿到了dalsa相机,可以用Sapera软件配置相机,进行图像采集.但是自己开发的话就得撸起袖子写代码了,查了两篇不错的博文,作为指导. 1.首先搞清楚要实现什么功能. 现在的应用是用编码器的脉冲触发 ...

  9. 【Machine Vision】Dalsa线扫相机SDK的下载和安装

    1.首先去官方网站下载SDK Support Downloads - Teledyne DALSA http://www.teledynedalsa.com/imaging/support/downl ...

最新文章

  1. JVM---本地方法接口和本地方法栈
  2. 大数据小项目之电视收视率企业项目04--完全分布式搭建
  3. 最大输入hdu 2534 规律水题 求任意个a,b的和 不能表示的最大的数
  4. ESFramework介绍之(14)-- AS与FS通信方案
  5. 解决:VMware DHCP Service 服务无法启动
  6. 7-31总结----javascript
  7. Linux用一键安装包快速部署禅道项目管理平台
  8. sql server 2005练习集(基础)
  9. Nginx源码分析 - 基础数据结构篇 - 数组结构 ngx_array.c(03)
  10. 腐蚀rust服务器命令_服务器指令_腐蚀RUST基本指令及服务器指令大全_3DM单机
  11. #先进先出#每批次采购价格不同,计算期末库存成本
  12. 第107章 SQL函数 $PIECE
  13. Android重新分区parted,使用parted划分GPT分区
  14. android的平台签名工具,《安卓开发》APK签名工具使用方法
  15. Win8 RP微软原版光盘镜像下载大全(含中文版)
  16. 在photoshop中,从1寸到24寸的大小是多少
  17. 企业微信组织架构同步优化的思路
  18. 设计模式-合成复用原则-》面向对象设计原则
  19. MapGuide空间参考系API
  20. java 三角形三边求三角_java通过三边长度判断是否是三角形

热门文章

  1. 基于stm32L0系列的AD7682驱动程序
  2. 拍照图片加入水印效果图片旋转了90度
  3. html 怎么引入c标签库,JSP taglib指令:引入标签库指令
  4. Ubuntu环境安装docker结合kitematic现实管理软件镜像包(真心好用)
  5. npm安装淘宝镜像安装Vue脚手架
  6. python pycurl_python3.7 安装pycurl
  7. ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl back
  8. DelphiXE环境认知
  9. POJ 3047 蔡勒公式
  10. Jaa之产生随机数!...