tuyue0417
2022-01-27 15:27
VM算法平台

如何使用相机SDK取流?

如何使用相机SDK取流? VM4.0.0 + VS2015及以上

  • 149
  • 1
  • 分享

全部回答1

V版主_Sherry

可以通过调用相机SDK来实现相机取流。

1.截取相机帧数据。示例代码如下。

1. C#

2. //相机相关变量

3. private VisionDesigner.Camera.CCameraTool m_cMyCameraToolObj = null;

4.  

5. /// <summary>

6. /// 打开相机并开始取图

7. /// </summary>

8. public int OpenCamera(int cameraindex = 0)

9. {

10.      try

11.      {

12.          //DeviceListAcq();//获取相机列表方法

13.          //创建相机算子实例

14.          if (null == m_cMyCameraToolObj)

15.          {

16.              m_cMyCameraToolObj = new VisionDesigner.Camera.CCameraTool();

17.              if (null == m_cMyCameraToolObj)

18.              {

19.                  return -1;

20.              }

21.          }

22.          //设置连续采集模式

23.          m_cMyCameraToolObj.SelectDevice(cameraindex);//默认选择索引为0的相机

24.          m_cMyCameraToolObj.OpenDevice();

25.          m_cMyCameraToolObj.SetEnumValue("AcquisitionMode", (uint)MVD_CAM_ACQUISITION_MODE.MVD_ACQ_MODE_CONTINUOUS);

26.          m_cMyCameraToolObj.SetEnumValue("TriggerMode", (uint)MVD_CAM_TRIGGER_MODE.MVD_TRIGGER_MODE_OFF);

27.          m_cMyCameraToolObj.SetEnumValue("TriggerSource", (uint)MVD_CAM_TRIGGER_SOURCE.MVD_TRIGGER_SOURCE_SOFTWARE);

28.          m_cMyCameraToolObj.StartGrab();//开始取图

29.          return 0;

30.      }

31.      catch (Exception ex)

32.      {

33.          return -1;

34.      }

35.  }

36.  /// <summary>

37.  /// 从相机获取一帧图像

38.  /// </summary>

39.  private void GetStreamThreadProc()

40.  {

41.      int nRet = 0;

42.      CMvdImage imgtemp = null;

43.      nRet = 0;

44.      nRet = m_cMyCameraToolObj.CameraGrabResult.GetOneFrameTimeout (ref imgtemp);

45.      if (0 == nRet && imgtemp != null)

46.      {

47.          ImageData imageshow1 = CMvdImageToImageData(imgtemp);

48.       }

49.  }

2.将相机帧类型CMvdImage图像数据转换成ImageData类型数据,代码如下。

1. C#

2. /// <summary>

3. /// CMvdImage格式的图像转为imagedata图像

4. /// </summary>

5. /// <param name="image"></param>

6. /// <returns></returns>

7. public ImageData CMvdImageToImageData(CMvdImage image)

8. {

9.     if (image != null)

10.      {

11.          ImageData imageData = new ImageData();

12.          imageData.Width = (int)image.Width;

13.          imageData.Height = (int)image.Height;

14.          imageData.PixelFormat = PixelFormats.Gray8;

15.          imageData.ImageBuffer = new byte[image.GetImageData(0).arrDataBytes.Length];

16.          Array.Copy(image.GetImageData(0).arrDataBytes, imageData.ImageBuffer, imageData.ImageBuffer.Length);

17.          return imageData;

18.      }

19.      else

20.      {

21.          return null;

22.      }

23.  }


2022-01-27 15:50
  • 评论
  • |

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器