#include "CameraImageHandler.h" #include "CameraMaterialGroupWnd/Group.h" #include CameraImageHandler::CameraImageHandler(const int groupId,const CameraInfo& cameraInfo) { captureAndConvertImage(groupId,cameraInfo); } void CameraImageHandler::captureAndConvertImage(const int groupId,const CameraInfo& cameraInfo) { m_pCViewInterface = ns_module::CViewInterface::GetInstance(); if (m_pCViewInterface == nullptr); { // 目前不做处理,为了兼容 } CreateGroupData(groupId,cameraInfo); } Group* CameraImageHandler::getGroup() const { return m_pGroup; } Wafer* CameraImageHandler::getWafer() const{ return m_pWafer; } Waffle* CameraImageHandler::getWaffle() const{ return m_pWaffle; } MaterialBox* CameraImageHandler::getMaterialBox() const { return m_pMaterialBox; } Bond* CameraImageHandler::getBond() const { return m_pBond; } QList> CameraImageHandler::getFileList(){ return m_pfileList; } void CameraImageHandler::CreateGroupData(const int groupId,const CameraInfo& cameraInfo) { QString strPatch = R"(D:\config\MaterialInfo\)"; // 真实的路径 switch (cameraInfo.iCameraId) { case 0: //TODO: yang { strPatch += CreateMaterialType(cameraInfo.eType); } break; case 1: { strPatch += CreateMaterialType(cameraInfo.eType); } break; case 2: { strPatch += CreateMaterialType(cameraInfo.eType); } break; case 3: { strPatch += CreateMaterialType(cameraInfo.eType); } break; case 4: { strPatch += CreateMaterialType(cameraInfo.eType); } break; default: break; } //初始化group //测试路径 strPatch = "D:/code/JSBTDieBondH/View/die-bonder-ui/images/test_image"; m_pfileList = loadImages(cameraInfo, strPatch); m_pGroup = new Group(groupId,cameraInfo, m_pCViewInterface,m_pfileList, this); } QString CameraImageHandler::CreateMaterialType(MATERIAL_TYPE materialType) { QString strLoadPatch; switch (materialType) { case MATERIAL_NULL: { } break; case MATERIAL_WAFER: { strLoadPatch = "Wafer"; m_pWafer = new Wafer(0); //TODO:以下传入指针实现同步? if (m_pCViewInterface != nullptr) { std::vector veWafer; m_pCViewInterface->GetWaferAllPointInfo(veWafer); m_pWafer->UpdataVal(veWafer); } else { m_pWafer->UpdataGenerateTestData(); } } break; case MATERIAL_WAFFLE: { strLoadPatch = "Waffle"; m_pWaffle = new Waffle(0); if (m_pCViewInterface != nullptr) { std::vector veWaffle; m_pCViewInterface->GetWafflePackAllPointInfo(veWaffle); m_pWaffle->UpdataVal(veWaffle); } else { m_pWaffle->UpdataGenerateTestData(); } } break; case MATERIAL_BOX: //-----------------------------未提供 { strLoadPatch = "MaterialBox"; m_pMaterialBox = new MaterialBox(0); } break; case MATERIAL_BOND: { strLoadPatch = "Bond"; m_pBond = new Bond(0); if (m_pCViewInterface != nullptr) { std::vector stPointInfo; m_pCViewInterface->GetBondAllPointInfo(stPointInfo); m_pBond->UpdataVal(stPointInfo); } else { m_pBond->UpdataGenerateTestData(); } } break; default: break; } return strLoadPatch; } QList> CameraImageHandler::loadImages(const CameraInfo& cameraInfo,const QString &dirPath) { QDir directory(dirPath); if (!directory.exists()) { qWarning() << "Directory does not exist:" << dirPath; } // 支持的图片格式过滤器 QStringList filters; filters << "*.png" << "*.jpg" << "*.jpeg" << "*.bmp" << "*.gif"; // 递归遍历所有子目录,忽略大小写 QDirIterator it(dirPath, filters, QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); QList> fileList; fileList.append(qMakePair(QString::fromStdString(cameraInfo.name), QString("1"))); while (it.hasNext()) { QString filePath = it.next(); QFileInfo fileInfo(filePath); // 添加文件名和完整路径到列表 fileList.append(qMakePair(fileInfo.fileName(), filePath)); } return fileList; }