qt连接hiki相机进行拍照保存

.pro

QT工程pro文件模板变量(TEMPLATE)模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:

app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。

lib - 建立一个库的makefile。

vcapp - 建立一个应用程序的Visual Studio项目文件。

vclib - 建立一个库的Visual Studio项目文件。

subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile

引入MVS库文件和头文件

INCLUDEPATH += /opt/MVS/include/

/opt/MVS/include/MvCameraControl.h

LIBS += /opt/MVS/lib/64/libMvCameraControl.so


控制按钮是否可点击的时候,setEnabled() 和 setClickable() 都可以做到,只要将它们设置成false ,按钮就不可点击,设置成true,按钮就可以点击。

setCheckable(true)为属性,表示可以选中

setChecked(true)为属性的值,表示已经选中

提取用户输入到EditText中的文本信息并暂时储存。

getText()方法用于检索数据,String变量来存储数据,setText()方法在应用别处显示数据。

这块代码是从相机列表中寻找出你选的相机调整增益,需要调整的代码与这个代码类似修改一些就好了

cpp 复制代码
int MainWindow::GetTriggerMode()
{
    MVCC_ENUMVALUE stEnumTriggerModeValue = { 0 };
    MVCC_ENUMENTRY stEnumTriggerModeEntry = { 0 };

    int nRet = m_pcMyCamera->GetEnumValue("TriggerMode", &stEnumTriggerModeValue);
    if (MV_OK != nRet)
    {
        return nRet;
    }

    ui->SelchangeTriggerswitchCombo->clear();
    for (int i = 0; i < stEnumTriggerModeValue.nSupportedNum; i++)
    {
        memset(&stEnumTriggerModeEntry, 0, sizeof(stEnumTriggerModeEntry));
        stEnumTriggerModeEntry.nValue = stEnumTriggerModeValue.nSupportValue[i];
        m_pcMyCamera->GetEnumEntrySymbolic("TriggerMode", &stEnumTriggerModeEntry);
        ui->SelchangeTriggerswitchCombo->addItem((QString)stEnumTriggerModeEntry.chSymbolic);
    }

    for (int i = 0; i < stEnumTriggerModeValue.nSupportedNum; i++)
    {
        if (stEnumTriggerModeValue.nCurValue == stEnumTriggerModeValue.nSupportValue[i])
        {
            m_nTriggerMode = i;
            ui->SelchangeTriggerselCombo->setCurrentIndex(m_nTriggerMode);
        }
    }

    return MV_OK;
}

这块的代码就是判断按键是否被按下,是否需要进行像素格式,曝光等参数的调整。

cpp 复制代码
void MainWindow::on_GetParameterButton_clicked()
{
    int nRet = GetTriggerSelector();
    if (nRet != MV_OK)
    {
        ui->SelchangeTriggerselCombo->setEnabled(false);
    }

    nRet = GetTriggerMode();
    if (nRet != MV_OK)
    {
        ui->SelchangeTriggerswitchCombo->setEnabled(false);
    }

    nRet = GetTriggerSource();
    if (nRet != MV_OK)
    {
        ui->SelchangeTriggersourceCombo->setEnabled(false);
    }

    nRet = GetExposureTime();
    if (nRet != MV_OK)
    {
        ui->ExposureTimeLineEdit->setEnabled(false);
    }

    nRet = GetDigitalShiftGain();
    if (nRet != MV_OK)
    {
        ui->PreampGainLineEdit->setEnabled(false);
    }

    nRet = GetPreampGain();
    if (nRet != MV_OK)
    {
        ui->SelchangePreampgainCombo->setEnabled(false);
    }

    nRet = GetAcquisitionLineRateEnable();
    if (nRet != MV_OK)
    {
        ui->AcquisitionLineRateEnableCheckBox->setEnabled(false);
    }

    nRet = GetAcquisitionLineRate();
    if (nRet != MV_OK)
    {
        ui->AcquisitionLineRateLineEdit->setEnabled(false);
    }

    nRet = GetResultingLineRate();
    if (nRet != MV_OK)
    {
        ui->ResultingLineRateLineEdit->setEnabled(false);
    }

    nRet = GetPixelFormat();
    if (nRet != MV_OK)
    {
        ui->SelchangePixelformatCombo->setEnabled(false);
    }

    nRet = GetImageCompressionMode();
    if (nRet != MV_OK)
    {
        ui->SelchangeImageCompressionModeCombo->setEnabled(false);
    }
}

设置的这些按钮在代码中会设置bool类型的变量,通过setEnabled(x)是true还是false来判断是否按下按钮。

cpp 复制代码
    bool                    m_bTriggerModeCheck;
    bool                    m_bPreampGain;
    bool                    m_bAcquisitionLineRate;
    bool                    m_bHBMode;
    bool                    m_bGrabbing;      //
    bool                    m_bOpenDevice;    // en:Whether to open device
cpp 复制代码
void MainWindow::EnableControls(bool bIsCameraReady)
{
    ui->OpenButton->setEnabled(m_bOpenDevice ? false : (bIsCameraReady ? true : false));
    ui->CloseButton->setEnabled((m_bOpenDevice && bIsCameraReady) ? true : false);
    ui->StartGrabbingButton->setEnabled((m_bGrabbing && bIsCameraReady) ? false : (m_bOpenDevice ? true : false));
    ui->StopGrabbingButton->setEnabled(m_bGrabbing ? true : false);
    ui->SoftwareOnceButton->setEnabled((m_bGrabbing && m_bTriggerModeCheck) ? true : false);
    ui->SaveBmpButton->setEnabled(m_bGrabbing ? true : false);
    ui->SaveTiffButton->setEnabled(m_bGrabbing ? true : false);
    ui->SavePngButton->setEnabled(m_bGrabbing ? true : false);
    ui->SaveJpgButton->setEnabled(m_bGrabbing ? true : false);
    ui->ExposureTimeLineEdit->setEnabled(m_bOpenDevice ? true : false);
    ui->PreampGainLineEdit->setEnabled(m_bOpenDevice ? true : false);
    ui->AcquisitionLineRateLineEdit->setEnabled((m_bOpenDevice && m_bAcquisitionLineRate) ? true : false);
    ui->ResultingLineRateLineEdit->setEnabled(m_bOpenDevice ? true : false);
    ui->SelchangeTriggerselCombo->setEnabled(m_bOpenDevice ? true : false);
    ui->SelchangeTriggerswitchCombo->setEnabled(m_bOpenDevice ? true : false);
    ui->GetParameterButton->setEnabled(m_bOpenDevice ? true : false);
    ui->SetParameterButton->setEnabled(m_bOpenDevice ? true : false);
    ui->SelchangeTriggersourceCombo->setEnabled(m_bOpenDevice ? true : false);
    ui->SelchangePixelformatCombo->setEnabled((m_bOpenDevice &&!m_bGrabbing) ? true : false);
    ui->SelchangeImageCompressionModeCombo->setEnabled((m_bOpenDevice && m_bHBMode &&!m_bGrabbing)? true : false);
    ui->SelchangePreampgainCombo->setEnabled((m_bOpenDevice && m_bPreampGain) ? true : false);
    ui->AcquisitionLineRateEnableCheckBox->setEnabled((m_bOpenDevice &&m_bAcquisitionLineRate)? true : false);
    ui->ResultingLineRateLineEdit->setEnabled(false);

    if (!m_bOpenDevice)
    {
        ui->AcquisitionLineRateEnableCheckBox->setChecked(false);
        ui->ExposureTimeLineEdit->setText(QString::number(0,10));
        ui->PreampGainLineEdit->setText(QString::number(0,10));
        ui->AcquisitionLineRateLineEdit->setText(QString::number(0,10));
        ui->ResultingLineRateLineEdit->setText(QString::number(0,10));

    }
}

如需源码--百度网盘

链接http://:https://pan.baidu.com/s/1ZFi0ciW2L4q2UNnWeOSt1Q?pwd=ajuh

提取码:ajuh

相关推荐
傻啦嘿哟1 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670791 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
李少兄2 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh2 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei3 小时前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界3 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
繁星蓝雨4 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J4 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
杜大哥4 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5554 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python