#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"qmessagebox.h"
#include"GalaxyIncludes.h"
#include<iostream>
#include<QDebug>
#include<QFileDialog>
#include<qelapsedtimer.h>
/*class MainWindow::CSampleCaptureEventHandler : public ICaptureEventHandler
{
public:
void DoOnImageCaptured(CImageDataPointer& objImageDataPointer, void* pUserParam)
{
if (objImageDataPointer->GetStatus() == GX_FRAME_STATUS_SUCCESS)
{
//图像获取为完整帧,可以读取图像宽、高、数据格式等
// uint64_t nWidth = objImageDataPointer->GetWidth();
// uint64_t nHeight = objImageDataPointer->GetHeight();
// GX_PIXEL_FORMAT_ENTRY emPixelFormat = objImageDataPointer->GetPixelFormat();
//采图成功而且是完整帧,可以进行图像处理...
HObject camImage;
GenEmptyObj(&camImage);
GenImage1(&camImage,"byte",(int)objImageDataPointer->GetWidth(),(int)objImageDataPointer->GetHeight(),(Hlong)objImageDataPointer->GetBuffer());
GetImageSize(camImage,&hv_Width,&hv_Height);
ClearWindow(hv_WindowHandle);
SetPart(hv_WindowHandle,0,0,hv_Height-1,hv_Width-1);
DispObj(camImage,hv_WindowHandle);
}
}
};*/
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Hlong WindID = (Hlong)ui->gv_Main->winId();
OpenWindow(0,0,ui->gv_Main->width(),ui->gv_Main->height(),WindID,"visible","",&hv_WindowHandle);
SetWindowAttr("background_color","black");
HDevWindowStack::Push(hv_WindowHandle);
m_pSampleCaptureEventHandle = new CSampleCaptureEventHandler();
m_pSampleCaptureEventHandle->hv_WindowHandle = hv_WindowHandle;
ui->btn_OPenDevice->setEnabled(false);
ui->btn_CloseDevice->setEnabled(false);
ui->btn_StartGrap->setEnabled(false);
ui->btn_StopGrap->setEnabled(false);
ui->btn_SoftTriggerOne->setEnabled(false);
}
MainWindow::~MainWindow()
{
delete m_pSampleCaptureEventHandle;
IGXFactory::GetInstance().Uninit();
delete ui;
}
void MainWindow::on_btn_ReadImage_clicked()
{
QString path = QFileDialog::getOpenFileName(this,"Select Image","","(*.png *.jpg *.bmp)");
if(path == "") return;
// OpenWindow(0,0,ui->gv_Main->width(),ui->gv_Main->height(),WindID,"visible","",&hv_WindowHandle);
// HDevWindowStack::Push(hv_WindowHandle);
QElapsedTimer recodeTime;
recodeTime.start();
ReadImage(&ho_Image,HTuple(path.toStdString().c_str()));
double time =(double) recodeTime.nsecsElapsed()/(double)1000000;
qDebug()<<time << endl;
GetImageSize(ho_Image,&hv_Width,&hv_Height);
ClearWindow(hv_WindowHandle);
SetPart(hv_WindowHandle,0,0,hv_Height-1,hv_Width-1);
DispObj(ho_Image,hv_WindowHandle);
}
void MainWindow::on_btn_OpenCam01_clicked()
{
IGXFactory::GetInstance().Init();
//枚举设备
GxIAPICPP::gxdeviceinfo_vector vectorDeviceInfo;
IGXFactory::GetInstance().UpdateDeviceList(1000, vectorDeviceInfo);
for (uint32_t i = 0; i < vectorDeviceInfo.size(); i++)
{
qDebug() << vectorDeviceInfo[i].GetVendorName() << endl;
qDebug() << vectorDeviceInfo[i].GetModelName() << endl;
//更多设备信息详见IGXDeviceInfo接口
}
//打开设备
if (vectorDeviceInfo.size() > 0)
{
//打开链表中的第一个设备
CGXDevicePointer objDevicePtr;
GxIAPICPP::gxstring strSN = vectorDeviceInfo[0].GetSN();
objDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN(strSN, GX_ACCESS_EXCLUSIVE);//目前只能通过strSN打开
objDevicePtr->Close();//关闭相机并释放资源
}
}
void MainWindow::on_btn_EnumDevice_clicked()
{
//枚举设备
IGXFactory::GetInstance().Init();
IGXFactory::GetInstance().UpdateDeviceList(1000, vectorDeviceInfo);
for (uint32_t i = 0; i < vectorDeviceInfo.size(); i++)
{
qDebug() << vectorDeviceInfo[i].GetVendorName() << endl;
qDebug() << vectorDeviceInfo[i].GetModelName() << endl;
//更多设备信息详见IGXDeviceInfo接口
}
if (vectorDeviceInfo.size() > 0)
{
ui->btn_OPenDevice->setEnabled(true);
ui->btn_CloseDevice->setEnabled(true);
ui->btn_StartGrap->setEnabled(true);
ui->btn_StopGrap->setEnabled(true);
ui->btn_SoftTriggerOne->setEnabled(true);
QString cameraName = vectorDeviceInfo[0].GetVendorName() + ":" +vectorDeviceInfo[0].GetModelName();
ui->lE_CameraName->setText(cameraName);
}
}
void MainWindow::on_btn_OPenDevice_clicked()
{
//打开设备
if (vectorDeviceInfo.size() > 0)
{
//打开链表中的第一个设备
GxIAPICPP::gxstring strSN = vectorDeviceInfo[0].GetSN();
objDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN(strSN, GX_ACCESS_EXCLUSIVE);//目前只能通过strSN打开
m_objStreamPtr = objDevicePtr->OpenStream(0);
}
}
void MainWindow::on_btn_CloseDevice_clicked()
{
objDevicePtr->Close();//关闭相机并释放资源
// IGXFactory::GetInstance().Uninit();
}
void MainWindow::on_btn_SoftTriggerOne_clicked()
{
CGXStreamPointer objStreamPtr = objDevicePtr->OpenStream(0);
//提高网络相机的采集性能,设置方法参考以下代码【目前只有千兆网系列相机支持设置最优包长】。
GX_DEVICE_CLASS_LIST objDeviceClass = objDevicePtr->GetDeviceInfo().GetDeviceClass();
if (GX_DEVICE_CLASS_GEV == objDeviceClass)
{
//判断设备是否支持流通道数据包功能
m_objIGXFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();
if (true == m_objIGXFeatureControlPtr->IsImplemented("GevSCPSPacketSize"))
{
//获取当前网络环境的最优包长值
int nPacketSize = objStreamPtr->GetOptimalPacketSize();
//将最优包长值设置为当前设备的流通道包长值
m_objIGXFeatureControlPtr->GetIntFeature("GevSCPSPacketSize")->SetValue(nPacketSize);
}
}
//开启流通道采集
objStreamPtr->StartGrab();
//给设备发送开采命令
CGXFeatureControlPointer objFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();
objFeatureControlPtr->GetCommandFeature("AcquisitionStart")->Execute();
//采单帧
CImageDataPointer objImageDataPtr;
objImageDataPtr = objStreamPtr->GetImage(500);//超时时间使用500ms,用户可以自行设定
if (objImageDataPtr->GetStatus() == GX_FRAME_STATUS_SUCCESS)
{
// QString str ="abs";
// qDebug()<<str << endl;
//采图成功而且是完整帧,可以进行图像处理...
HObject camImage;
GenEmptyObj(&camImage);
GenImage1(&camImage,"byte",(int)objImageDataPtr->GetWidth(),(int)objImageDataPtr->GetHeight(),(Hlong)objImageDataPtr->GetBuffer());
GetImageSize(camImage,&hv_Width,&hv_Height);
// qDebug()<< (int)hv_Width << endl;
// qDebug()<<(int)hv_Height << endl;
ClearWindow(hv_WindowHandle);
SetPart(hv_WindowHandle,0,0,hv_Height-1,hv_Width-1);
DispObj(camImage,hv_WindowHandle);
}
//停采
objFeatureControlPtr->GetCommandFeature("AcquisitionStop")->Execute();
objStreamPtr->StopGrab();
//关闭流通道
objStreamPtr->Close();
}
void MainWi
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
UseHalconDemo.zip (8个子文件)
UseHalconDemo
csamplecaptureeventhandler.cpp 1KB
csamplecaptureeventhandler.h 567B
UseHalconDemo.pro.user 23KB
UseHalconDemo.pro 2KB
main.cpp 183B
mainwindow.ui 8KB
mainwindow.cpp 12KB
mainwindow.h 1KB
共 8 条
- 1
资源评论
- 小埋妹妹2023-07-25这个文件对于初学者来说有一定难度,但只要按照步骤一步一步操作,还是很容易上手的。
- UEgood雪姐姐2023-07-25作者在文件中提供了详细的步骤和代码,对于有一定编程基础的用户来说,是一个不错的学习资源。
- ShenPlanck2023-07-25这个文件内容丰富,对于需要在QT下调用大恒相机的人来说,是个很好的参考。
- 苏采2023-07-25该文件提供了一个清晰易懂的示例,通过Halcon图像数据的显示,让人更好地理解了SDK的转换过程。
- 东方捕2023-07-25整体而言,这份文件虽然简单,但对于使用QT调用大恒相机的人来说,是个很实用的指南。
Mr_Four97
- 粉丝: 1386
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功