123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- #pragma execution_character_set("utf-8")
- #include "mindcamera.h"
- void _stdcall GrabImageCallback1(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead, PVOID pContext)
- {
- /*
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pRgbBuffer[0], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readBuf[0], pThis->g_pRgbBuffer[0], nWidth * nHeight * 3);
- QImage image = QImage((const uchar*)pThis->g_readBuf[0], nWidth, nHeight, QImage::Format_RGB888);
- pThis->SetQImage(image);
- HObject himage;
- GenImageInterleaved(&himage, (Hlong)pThis->g_pRgbBuffer[0], "rgb", nWidth, nHeight, 0, "byte", nWidth, nHeight, 0, 0, -1, 0);
- pThis->SetHImage(himage);
- }
- */
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pGrayBuffer[0], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readGrayBuf[0], pThis->g_pGrayBuffer[0], nWidth * nHeight);
- QImage image = QImage((const uchar*)pThis->g_readGrayBuf[0], nWidth, nHeight, QImage::Format_Indexed8);
- pThis->SetQImage(image);
- HObject himage;
- GenImage1(&himage, "byte", nWidth, nHeight, (Hlong)pThis->g_pGrayBuffer[0]);
- pThis->SetHImage(himage);
- }
- }
- void _stdcall GrabImageCallback2(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead,PVOID pContext)
- {
- /*
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pRgbBuffer[1], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readBuf[1], pThis->g_pRgbBuffer[1], nWidth * nHeight * 3);
- QImage image = QImage((const uchar*)pThis->g_readBuf[1], nWidth, nHeight, QImage::Format_RGB888);
- pThis->SetQImage(image);
- HObject himage;
- GenImageInterleaved(&himage, (Hlong)pThis->g_pRgbBuffer[1], "rgb", nWidth, nHeight, 0, "byte", nWidth, nHeight, 0, 0, -1, 0);
- pThis->SetHImage(himage);
- }
- */
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pGrayBuffer[1], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readGrayBuf[1], pThis->g_pGrayBuffer[1], nWidth * nHeight);
- QImage image = QImage((const uchar*)pThis->g_readGrayBuf[1], nWidth, nHeight, QImage::Format_Indexed8);
- pThis->SetQImage(image);
- HObject himage;
- GenImage1(&himage, "byte", nWidth, nHeight, (Hlong)pThis->g_pGrayBuffer[1]);
- pThis->SetHImage(himage);
- }
- }
- void _stdcall GrabImageCallback3(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead,PVOID pContext)
- {
- /*
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pRgbBuffer[2], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readBuf[2], pThis->g_pRgbBuffer[2], nWidth * nHeight * 3);
- QImage image = QImage((const uchar*)pThis->g_readBuf[2], nWidth, nHeight, QImage::Format_RGB888);
- pThis->SetQImage(image);
- HObject himage;
- GenImageInterleaved(&himage, (Hlong)pThis->g_pRgbBuffer[2], "rgb", nWidth, nHeight, 0, "byte", nWidth, nHeight, 0, 0, -1, 0);
- pThis->SetHImage(himage);
- }
- */
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pGrayBuffer[2], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readGrayBuf[2], pThis->g_pGrayBuffer[2], nWidth * nHeight);
- QImage image = QImage((const uchar*)pThis->g_readGrayBuf[2], nWidth, nHeight, QImage::Format_Indexed8);
- pThis->SetQImage(image);
- HObject himage;
- GenImage1(&himage, "byte", nWidth, nHeight, (Hlong)pThis->g_pGrayBuffer[2]);
- pThis->SetHImage(himage);
- }
- }
- void _stdcall GrabImageCallback4(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead,PVOID pContext)
- {
- /*
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pRgbBuffer[3], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readBuf[3], pThis->g_pRgbBuffer[3], nWidth * nHeight * 3);
- QImage image = QImage((const uchar*)pThis->g_readBuf[3], nWidth, nHeight, QImage::Format_RGB888);
- pThis->SetQImage(image);
- HObject himage;
- GenImageInterleaved(&himage, (Hlong)pThis->g_pRgbBuffer[3], "rgb", nWidth, nHeight, 0, "byte", nWidth, nHeight, 0, 0, -1, 0);
- pThis->SetHImage(himage);
- }
- */
- MindCamera *pThis = (MindCamera*)pContext;
- CameraSdkStatus status = CameraImageProcess(hCamera, pFrameBuffer, pThis->g_pGrayBuffer[3], pFrameHead);
- CameraReleaseImageBuffer(hCamera, pFrameBuffer);
- if(status == CAMERA_STATUS_SUCCESS)
- {
- int nWidth = pFrameHead->iWidth;
- int nHeight = pFrameHead->iHeight;
- memcpy(pThis->g_readGrayBuf[3], pThis->g_pGrayBuffer[3], nWidth * nHeight);
- QImage image = QImage((const uchar*)pThis->g_readGrayBuf[3], nWidth, nHeight, QImage::Format_Indexed8);
- pThis->SetQImage(image);
- HObject himage;
- GenImage1(&himage, "byte", nWidth, nHeight, (Hlong)pThis->g_pGrayBuffer[3]);
- pThis->SetHImage(himage);
- }
- }
- void MindCamera::SetQImage(QImage qimage)
- {
- emit sig_qimage(qimage);
- }
- void MindCamera::SetHImage(HObject himage)
- {
- emit sig_himage(himage);
- }
- MindCamera::MindCamera(QObject *parent) : QObject(parent)
- {
- CameraSdkInit(1);
- InitCamera();
- }
- void MindCamera::OpenCameraByID(int id)
- {
- if(id == 0)
- {
- CameraPause(m_hCamera[0]);
- CameraPause(m_hCamera[1]);
- CameraPause(m_hCamera[2]);
- CameraPause(m_hCamera[3]);
- }
- if(id == 1)
- {
- CameraPause(m_hCamera[0]);
- CameraPause(m_hCamera[1]);
- CameraPause(m_hCamera[2]);
- CameraPause(m_hCamera[3]);
- if(index1 == 0)
- {
- CameraPlay(m_hCamera[0]);
- }
- if(index1 == 1)
- {
- CameraPlay(m_hCamera[1]);
- }
- if(index1 == 2)
- {
- CameraPlay(m_hCamera[2]);
- }
- if(index1 == 3)
- {
- CameraPlay(m_hCamera[3]);
- }
- }
- if(id == 2)
- {
- CameraPause(m_hCamera[0]);
- CameraPause(m_hCamera[1]);
- CameraPause(m_hCamera[2]);
- CameraPause(m_hCamera[3]);
- if(index2 == 0)
- {
- CameraPlay(m_hCamera[0]);
- }
- if(index2 == 1)
- {
- CameraPlay(m_hCamera[1]);
- }
- if(index2 == 2)
- {
- CameraPlay(m_hCamera[2]);
- }
- if(index2 == 3)
- {
- CameraPlay(m_hCamera[3]);
- }
- }
- if(id == 3)
- {
- CameraPause(m_hCamera[0]);
- CameraPause(m_hCamera[1]);
- CameraPause(m_hCamera[2]);
- CameraPause(m_hCamera[3]);
- if(index3 == 0)
- {
- CameraPlay(m_hCamera[0]);
- }
- if(index3 == 1)
- {
- CameraPlay(m_hCamera[1]);
- }
- if(index3 == 2)
- {
- CameraPlay(m_hCamera[2]);
- }
- if(index3 == 3)
- {
- CameraPlay(m_hCamera[3]);
- }
- }
- if(id == 4)
- {
- CameraPause(m_hCamera[0]);
- CameraPause(m_hCamera[1]);
- CameraPause(m_hCamera[2]);
- CameraPause(m_hCamera[3]);
- if(index4 == 0)
- {
- CameraPlay(m_hCamera[0]);
- }
- if(index4 == 1)
- {
- CameraPlay(m_hCamera[1]);
- }
- if(index4 == 2)
- {
- CameraPlay(m_hCamera[2]);
- }
- if(index4 == 3)
- {
- CameraPlay(m_hCamera[3]);
- }
- }
- }
- void MindCamera::InitCamera()
- {
- tSdkCameraDevInfo sCameraList[4];
- INT iCameraNums = 4;
- CameraSdkStatus status;
- tSdkCameraCapbility sCameraInfo;
- if(CameraEnumerateDevice(sCameraList, &iCameraNums) != CAMERA_STATUS_SUCCESS || iCameraNums == 0)
- {
- qDebug() << "没有找到相机";
- return;
- }
- else
- {
- qDebug() << "相机个数: " << QString::number(iCameraNums);
- }
- for (int i = 0; i < iCameraNums; i++)
- {
- if ((status = CameraInit(&sCameraList[i], -1, -1, &m_hCamera[i])) == CAMERA_STATUS_SUCCESS)
- {
- CameraGetCapability(m_hCamera[i], &sCameraInfo);
- /*
- g_pRgbBuffer[i] = (unsigned char*)malloc(sCameraInfo.sResolutionRange.iHeightMax * sCameraInfo.sResolutionRange.iWidthMax * 3);
- g_readBuf[i] = (unsigned char*)malloc(sCameraInfo.sResolutionRange.iHeightMax * sCameraInfo.sResolutionRange.iWidthMax * 3);
- if(sCameraInfo.sIspCapacity.bMonoSensor)
- {
- CameraSetIspOutFormat(m_hCamera[i], CAMERA_MEDIA_TYPE_MONO8);
- }
- else
- {
- CameraSetIspOutFormat(m_hCamera[i], CAMERA_MEDIA_TYPE_RGB8);
- }
- */
- g_pGrayBuffer[i] = (unsigned char*)malloc(sCameraInfo.sResolutionRange.iHeightMax * sCameraInfo.sResolutionRange.iWidthMax);
- g_readGrayBuf[i] = (unsigned char*)malloc(sCameraInfo.sResolutionRange.iHeightMax * sCameraInfo.sResolutionRange.iWidthMax);
- if(i == 0)
- {
- CameraSetCallbackFunction(m_hCamera[i], GrabImageCallback1, (PVOID)this, NULL);
- }
- if(i == 1)
- {
- CameraSetCallbackFunction(m_hCamera[i], GrabImageCallback2, (PVOID)this, NULL);
- }
- if(i == 2)
- {
- CameraSetCallbackFunction(m_hCamera[i], GrabImageCallback3, (PVOID)this, NULL);
- }
- if(i == 3)
- {
- CameraSetCallbackFunction(m_hCamera[i], GrabImageCallback4, (PVOID)this, NULL);
- }
- CameraSetIspOutFormat(m_hCamera[i], CAMERA_MEDIA_TYPE_MONO8);
- }
- }
- char sn1[32];
- memset(sn1, 0, 32);
- CameraReadSN(m_hCamera[0], (BYTE*)sn1, 0);
- char sn2[32];
- memset(sn2, 0, 32);
- CameraReadSN(m_hCamera[1], (BYTE*)sn2, 0);
- char sn3[32];
- memset(sn3, 0, 32);
- CameraReadSN(m_hCamera[2], (BYTE*)sn3, 0);
- char sn4[32];
- memset(sn4, 0, 32);
- CameraReadSN(m_hCamera[3], (BYTE*)sn4, 0);
- QSettings config("config.ini", QSettings::IniFormat);
- QString SN1 = config.value("config/SN1").toString();
- QString SN2 = config.value("config/SN2").toString();
- QString SN3 = config.value("config/SN3").toString();
- QString SN4 = config.value("config/SN4").toString();
- if(QString::fromStdString(sn1) == SN1)
- {
- index1 = 0;
- }
- if(QString::fromStdString(sn2) == SN1)
- {
- index1 = 1;
- }
- if(QString::fromStdString(sn3) == SN1)
- {
- index1 = 2;
- }
- if(QString::fromStdString(sn4) == SN1)
- {
- index1 = 3;
- }
- if(QString::fromStdString(sn1) == SN2)
- {
- index2 = 0;
- }
- if(QString::fromStdString(sn2) == SN2)
- {
- index2 = 1;
- }
- if(QString::fromStdString(sn3) == SN2)
- {
- index2 = 2;
- }
- if(QString::fromStdString(sn4) == SN2)
- {
- index2 = 3;
- }
- if(QString::fromStdString(sn1) == SN3)
- {
- index3 = 0;
- }
- if(QString::fromStdString(sn2) == SN3)
- {
- index3 = 1;
- }
- if(QString::fromStdString(sn3) == SN3)
- {
- index3 = 2;
- }
- if(QString::fromStdString(sn4) == SN3)
- {
- index3 = 3;
- }
- if(QString::fromStdString(sn1) == SN4)
- {
- index4 = 0;
- }
- if(QString::fromStdString(sn2) == SN4)
- {
- index4 = 1;
- }
- if(QString::fromStdString(sn3) == SN4)
- {
- index4 = 2;
- }
- if(QString::fromStdString(sn4) == SN4)
- {
- index4 = 3;
- }
- }
|