设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

[C#] 请问下,相机回传的彩色图像指针怎么转换到HObject格式

[复制链接]
15971401251 发表于 2023-8-17 19:38:35 | 显示全部楼层 |阅读模式
黑白图像可以用HOperatorSet.GenImage1直接转,
彩色图像需要3个指针,怎么得到这些指针
72412948ef635037d790fa40e6887c4.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2023-8-17 20:35:40 | 显示全部楼层
GenImage3这个算子你拿到也没用,因为相机收到的是原始数据帧,按照像素格式依次的存储的,不是三个分开的连续地址。
比如常见RGB8位,也是分辨率x3,而单个像素是由RGB依次组成。
而且你收到的图像格式位数,对齐,都不确定,你怎么转?
你可以设置相机像素格式位RGB8位,那么Halcon这边可以用:
  1. HOperatorSet.GenImageInterleaved(out ho_ImageGlobalTmp, pData, "rgb", nWidth, nHeight, 0, "byte", 0, 0, 0, 0, 8, 0);
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 15971401251 发表于 2023-8-17 20:49:42 | 显示全部楼层
本帖最后由 15971401251 于 2023-8-17 21:21 编辑
Criss 发表于 2023-8-17 20:35
GenImage3这个算子你拿到也没用,因为相机收到的是原始数据帧,按照像素格式依次的存储的,不是三个分开的 ...

相机格式BayerGB8, 我试下了代码,程序直接中断了,连异常都不报
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
风景你好 发表于 2023-8-17 22:41:28 | 显示全部楼层
需要转换,参考海康MVS的例程。

  1. MyCamera.MV_PIXEL_CONVERT_PARAM stPixelConvertParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();

  2.                             stPixelConvertParam.pSrcData = stFrameOut.pBufAddr;//源数据
  3.                             stPixelConvertParam.nWidth = stFrameOut.stFrameInfo.nWidth;//图像宽度
  4.                             stPixelConvertParam.nHeight = stFrameOut.stFrameInfo.nHeight;//图像高度
  5.                             stPixelConvertParam.enSrcPixelType = stFrameOut.stFrameInfo.enPixelType;//源数据的格式
  6.                             stPixelConvertParam.nSrcDataLen = stFrameOut.stFrameInfo.nFrameLen;

  7.                             stPixelConvertParam.nDstBufferSize = (uint)nImageBufSize;
  8.                             stPixelConvertParam.pDstBuffer = pImageBuf;//转换后的数据
  9.                             stPixelConvertParam.enDstPixelType = MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed;
  10.                             nRet = device.MV_CC_ConvertPixelType_NET(ref stPixelConvertParam);//格式转换
  11. if (MyCamera.MV_OK != nRet)
  12.                             {
  13.                                 break;
  14.                             }
  15.                             pTemp = pImageBuf;
  16. try
  17.                         {
  18.                             HOperatorSet.GenImageInterleaved(out Hobj, (HTuple)pTemp, (HTuple)"rgb", (HTuple)stFrameOut.stFrameInfo.nWidth, (HTuple)stFrameOut.stFrameInfo.nHeight, -1, "byte", 0, 0, 0, 0, -1, 0);
  19.                         }
  20.                         catch (System.Exception ex)
  21.                         {
  22.                             MessageBox.Show(ex.ToString());
  23.                             break;
  24.                         }
复制代码


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Yanlf 发表于 2023-8-18 07:57:13 | 显示全部楼层
参考海康威视的demo看下吧
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 15971401251 发表于 2023-8-18 14:46:45 | 显示全部楼层
风景你好 发表于 2023-8-17 22:41
需要转换,参考海康MVS的例程。

OK 把格式转换一下就行
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 15971401251 发表于 2023-8-18 20:01:59 | 显示全部楼层
不用像素转换,可以直接注册RGB像素回调
ee3e676ee7e8cdb18d3f464b2a046a4.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表