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()方法在应用别处显示数据。
这块代码是从相机列表中寻找出你选的相机调整增益,需要调整的代码与这个代码类似修改一些就好了
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;
}
这块的代码就是判断按键是否被按下,是否需要进行像素格式,曝光等参数的调整。
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来判断是否按下按钮。
bool m_bTriggerModeCheck;
bool m_bPreampGain;
bool m_bAcquisitionLineRate;
bool m_bHBMode;
bool m_bGrabbing; //
bool m_bOpenDevice; // en:Whether to open device
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
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!