【问题标题】:Convert an emgu code to GPU将 emgu 代码转换为 GPU
【发布时间】:2012-08-16 18:51:20
【问题描述】:

我是 GPU 编程的新手,在使用 GPU 之前我没有经验,我有一些功能,我必须转换这些功能以便它们在 GPU 中运行,cpu 版本运行良好,我使用过 emgucv用于图像操作。我的代码如下,请帮助我。

public static Image Highlight(Image image)
    {
      if (image == null)
      {
        throw new ArgumentNullException("image");
      }

      using (Image<Bgr, byte> originalImage = ConvertToEmgu(image))
      using (Image<Bgr, byte> resavedOriginalImage = ConvertToEmgu(ResaveImageWithGivenCompression(image)))
      using (Image<Bgr, byte> errorLevelImage = (originalImage - resavedOriginalImage) * scalingFactor)
      {
        return errorLevelImage.ToBitmap();
      }
    }

    private static Image<Bgr, byte> ConvertToEmgu(Image image)
    {
      using (Bitmap bitmap = new Bitmap(image))
      {
        return new Image<Bgr, byte>(bitmap);
      }
    }

    private static Image ResaveImage(Image image)
    {
      EncoderParameters jpegEncoderParameters = new EncoderParameters(1);
      ImageCodecInfo jpegWithGivenCompressionFormat = GetEncoderInfo("image/jpeg");

      jpegEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, compressionQuality);

      using (MemoryStream resavedImageStream = new MemoryStream())
      {
        image.Save(resavedImageStream, jpegWithGivenCompressionFormat, jpegEncoderParameters);

        return Image.FromStream(resavedImageStream);
      }
    }

    private static ImageCodecInfo GetEncoderInfo(string mimeType)
    {
      ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();

      return encoders.FirstOrDefault(encoder => encoder.MimeType == mimeType);
    }
  }

【问题讨论】:

  • 这是一个研究得很糟糕的问题。你甚至没有说你想在目标 GPU 上使用什么 API/框架。请编辑您的问题,以包含有关您正在尝试做什么以及您不理解的更多信息。
  • 好的,使用我发布的代码,我想在 GPU 中运行这些功能,我正在使用 .NET 框架 3.5 并使用 visualstudio 2008。我不熟悉的是我必须做些什么才能将 gpu 支持添加到这些功能。
  • 您在问题中已经说过了。但是您甚至还没有说您打算用什么语言和 API 编写 GPU 代码。如果您对此一无所知,那么您还没有准备好提出有关实施的问题StackOverflow 上的详细信息。
  • 对不起,实际上我已经提到我使用 emgucv 进行图像操作,所以我使用 c#,我想在 GPU 中进行这些图像操作。在这个程序中没有太多复杂的图像操作,只是拍摄了一些图像差异。我想为那部分添加 gpu 支持。

标签: gpu emgucv


【解决方案1】:
  • 首先您需要一个至少支持 CUDA 2.0 的显卡。
  • 然后您必须从 NVidia 安装 CUDA 驱动程序。搜索 CUDA 工具包。
  • 然后你需要在你的项目中包含 CUDA dll(就像你 使用 Opencv dll)
  • 那么你需要使用 CV.GPU 命名空间
  • 然后将所有函数替换为适当的 GPU 版本。 在您的代码中,我没有看到任何 OpenCV 函数,因此没有什么可做的 代替。 (但我可能会遗漏一些)

【讨论】:

    【解决方案2】:

    请查看以下网站回答您的问题

    http://opencv.willowgarage.com/wiki/OpenCV_GPU http://opencv.itseez.com/doc/tutorials/tutorials.html http://blog.cuvilib.com/2011/03/22/how-to-build-opencv-2-2-with-gpu-cuda-on-windows-7/

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 2015-05-23
      • 2017-09-23
      • 2012-04-25
      • 2018-11-05
      • 2013-10-24
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多