编程环境

vs2019+QT5.12.10
大恒官方相机驱动库

下载驱动-》安装驱动

默认路径安装即可。参考编程mfc例子路径

搭建测试demo

首先相机初始化列表在构造过程中

在cam.cpp中

: QObject(parent), m_bDevOpened(false), m_bIsSnap(false), m_bColorFilter(false), m_bTriggerMode(false), m_hDevice(NULL), m_pGammaLut(NULL), m_pContrastLut(NULL), m_pBufferRGB(NULL)          // RGB图像数据,用于显示, m_pBufferRaw(NULL)CamFps= m_pstCam.fFps;m_DevOpened= m_bDevOpened;m_IsSnap = m_bIsSnap;sn  = ""; m_btcpimg = false;GX_STATUS emStatus = GX_STATUS_SUCCESS;m_pBaseinfo = NULL;                 m_npfpsCont = 0;                   //初始化库emStatus = GXInitLib();if (emStatus != GX_STATUS_SUCCESS){ShowErrorString(emStatus);exit(0);}

打开设备

void CamDaheng::on_OpenCam()
{GX_STATUS      emStatus = GX_STATUS_SUCCESS;uint32_t       nDevNum = 0;GX_OPEN_PARAM  stOpenParam;stOpenParam.accessMode = GX_ACCESS_EXCLUSIVE;stOpenParam.openMode = GX_OPEN_INDEX;stOpenParam.pszContent = "1";size_t     nSize = 0;// 枚举设备emStatus = GXUpdateDeviceList(&nDevNum, 1000);GX_VERIFY(emStatus);// 判断设备个数if (nDevNum <= 0){ShowNewsR("没有发现设备!!!!!", "");return;}// 为获取设备信息准备资源m_pBaseinfo = new GX_DEVICE_BASE_INFO[nDevNum];if (m_pBaseinfo == NULL){nDevNum = 0;return;}nSize = nDevNum * sizeof(GX_DEVICE_BASE_INFO);  //计算结构体大小emStatus = GXGetAllDeviceBaseInfo(m_pBaseinfo, &nSize);sn = m_pBaseinfo[0].szSN;if (emStatus != GX_STATUS_SUCCESS){ShowErrorString(emStatus);delete[]m_pBaseinfo;m_pBaseinfo = NULL;// 将设备个数置为0nDevNum = 0;return;}// 如果设备已经打开则关闭,保证相机在初始化出错情况能再次打开if (m_hDevice != NULL){emStatus = GXCloseDevice(m_hDevice);GX_VERIFY(emStatus);m_hDevice = NULL;}// 打开设备emStatus = GXOpenDevice(&stOpenParam, &m_hDevice);GX_VERIFY(emStatus);m_bDevOpened = TRUE;m_DevOpened = m_bDevOpened;// 建议用户在打开网络相机之后,根据当前网络环境设置相机的流通道包长值,// 以提高网络相机的采集性能,设置方法参考以下代码。{bool  bImplementPacketSize = false;uint32_t unPacketSize = 0;// 判断设备是否支持流通道数据包功能emStatus = GXIsImplemented(m_hDevice, GX_INT_GEV_PACKETSIZE, &bImplementPacketSize);GX_VERIFY(emStatus);if (bImplementPacketSize){// 获取当前网络环境的最优包长值//emStatus = GXGetOptimalPacketSize(m_hDevice, &unPacketSize);GX_VERIFY(emStatus);// 将最优包长值设置为当前设备的流通道包长值emStatus = GXSetInt(m_hDevice, GX_INT_GEV_PACKETSIZE, unPacketSize);GX_VERIFY(emStatus);}}// 设置相机的默认参数:采集模式:连续采集,数据格式:8-bitemStatus = InitDevice();GX_VERIFY(emStatus);// 获取设备的宽、高等属性信息emStatus = GetDeviceParam();GX_VERIFY(emStatus);// ui.m_txtEdit->setPlainText("打开相机成功!");}

其实主要的参照vc的sdk,记录一下问题

问题记录

1.相机显示过程中读取图像的buffer,无图像显示
答:我用的是qlable作为图像显示,在应用qimage过程中很容易出现野指针的状况,所以应用过程中需要谨慎

if (pFrame->status == 0){memcpy(pDlg->m_pRawBuffer, pFrame->pImgBuf, pFrame->nImgSize);if (pDlg->m_bIsColorFilter){// 彩色图像需要将Raw8图像经过RGB转换后显示DxRaw8toRGB24(pDlg->m_pRawBuffer, pDlg->m_pImgBuffer, nImageWidth , nImageHeight, RAW2RGB_NEIGHBOUR,DX_PIXEL_COLOR_FILTER(pDlg->m_nPixelColorFilter), TRUE);}else{// 黑白相机需要翻转数据后显示for(VxUint32 i = 0; i < nImageHeight; i++){memcpy(pDlg->m_pImgBuffer + i * nImageWidth, pDlg->m_pRawBuffer + (nImageHeight - i - 1) * nImageWidth, (size_t)nImageWidth);}}    // 显示图像pDlg->DrawImg(pDlg->m_pImgBuffer);}

在应用上面处理过程中,有问题在qtQimage中

void CamDaheng::DrawImg()
{m_npfpsCont++;GX_STATUS emStatus = GX_STATUS_SUCCESS;//显示帧率CamFps = m_pstCam.fFps;//显示图像m_qInputImg = QImage((const uchar*)m_pBufferRaw, m_nImageWidth, m_nImageHeight, QImage::Format_Indexed8);bool isNull = m_qInputImg.isNull();if (m_qInputImg.isNull()){return;}else{emit TransImage(m_qInputImg);}m_DevOpened = m_bDevOpened;m_IsSnap = m_bIsSnap;if (m_btcpimg == true){QImage igScaled = m_qInputImg.scaled(800, 700, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//m_server->SendData(igScaled);emit StartThread(igScaled);}
}

QT 驱动大恒水星相机相关推荐

  1. 大恒水星相机+opencv4.0.1保存视频

    最近项目上需要做一个保存相机视频的功能,手头上刚好有一个大恒130W分辨率的黑白水星相机.因此,就用该摄像机结合opencv实现了该功能. 准备工作: 1.OpenCV:版本4.0.1 2.大恒水星相 ...

  2. 大恒水星相机开发记录

    大恒水星相机开发记录 前面的话: 最近搞了一个大恒的相机MER-500-14GC,本着这可是行业龙头的工业相机嘛,终归是在学校摸到了真正的工业级产品了.(٩(๑>◡<๑)۶) 想着用ope ...

  3. 配置网口相机(大恒水星相机)

    配置网口相机(大恒水星相机) 相机参数: 首先查看电脑是否为支持千兆网口. 从这里看的出来(GbE)是千兆的. 也可以用鲁大师,用鲁大师查看,确实是千兆网口. 命令行输入ipconfig/all,可以 ...

  4. 使用大恒水星相机利用OpenCV+ Zbar 解QR码在ROS下定位的实现

    使用大恒水星相机利用OpenCV+ Zbar 解QR码在ROS下定位的实现 本次的程序功能实现是在师兄原有程序的基础上,经我继续开发的.主要完成的功能是使用QR码定位,将位姿信息通过ROS中的tf变换 ...

  5. vs+Qt+opencv+大恒相机开发(基础功能,适合初学者学习)

    注:代码仅供参考,相互学习. 本意:帮助大家快速入手大恒相机,也留个记录后续优化. 配置环境:VS2019.OpenCV454.Qt5.14.2.大恒水星系列相机(gige) 优化: 2022/4/2 ...

  6. 大恒水晶相机_大恒工业相机多实例使用

    工作环境比较恶劣并且有较多干扰源的环境做视觉识别一般都使用工业相机,大恒水晶相机是比较常用的一种.比起来进口相机,虽然用起来会更麻烦,但好在价格便宜,各项指标也不低. 大恒水晶相机是提供SDK的方式跟 ...

  7. QT调用大恒相机的开发教程

    Qt(5.12.10) 调用大恒相机,实时显示图像,并保存bmp文件 文章导读:相机为大恒相机,接口是USB3.0,水星系列产品.本项目采用Qt5.12.10版本编码,编译器为MSVC2017,ope ...

  8. Vs2017+opencv调用大恒图像相机,实现读存操作

    一.首先搭建vs环境,这里主要介绍怎么配置大恒图像的水星二代的sdk a) 新建空项目,选择项目->属性->VC++目录->包含目录,添加下列两个inc文件(来源于官网下载的驱动软件 ...

  9. QT + 大恒水星工业相机 +vs2017 实现线程拍摄视频

    上文中驱动水星工业相机采集视频是采用官方例程修改,利用OpenCV显示函数实现的一个弹出的大窗口,无法控制.想着做一个播放界面,故采取QT实现了一个简单的界面播放器,使用多线程实现视频的采集. 采取Q ...

最新文章

  1. 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码
  2. [转]一文解释PyTorch求导相关 (backward, autograd.grad)
  3. ibatis中的xml配置文件
  4. 基于matlab的fisher线性判别及感知器判别_基于嵌入表示的网络实体对齐方法进展概述...
  5. 苹果针对FaceTime内的4个iOS漏洞提出更新
  6. 前端Vue3中级视频(240分钟)评分95分
  7. JavaScript闭包简单应用
  8. MyEclipse安装插件egit并上传项目到码云
  9. 双机热备、双机互备与 双机双工的区别
  10. 中国书法之美 No。2017-08-30
  11. 二、安装Robot framework-selenium2library
  12. 神州十三号就位,小火箭先去探探路
  13. 魔方阵原理及十种解法(C语言)
  14. 槑图秀秀 (初学JAVA第三篇)
  15. 一个中年SAP自由职业者的2020年终总结
  16. 2018-2019-2 20189215 《网络攻防技术》第二周作业
  17. 软件工程第一次作业:写一篇自己的博客
  18. autoJS for 快手极速版 可运行
  19. cad审图软件lisp_CAD审图标记下载_CAD审图标记官方下载_CAD审图标记v4-华军软件园...
  20. unity cardboard 导出

热门文章

  1. ABP+AdminLTE+Bootstrap Table权限管理系统第四节--仓储,服务,服务接口及依赖注入
  2. android作用是什么意思,安卓ART模式是什么意思 ART模式有什么作用及功能
  3. Android运行环境Dalvik模式和ART模式的区别
  4. 安装Modem Meta遇到的DLL问题
  5. python内建函数使用_【28】Python十二个常用的内建函数
  6. 深度学习(DL) /人工智能(AI)数据集标注工具、图像语料数据库
  7. 区块链之《Chia 技术架构》
  8. clover正常的安装完成后,进入系统会出现死循环,AMFI:Denying core dump for pid *** too many corpses being created
  9. Excel 函数进阶
  10. 【重磅】4 款超好用的在线视频转GIF神器推荐!!