将emgu代码转换为GPU

时间:2012-08-16 18:51:21

标签: gpu emgucv

我在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);
    }
  }

2 个答案:

答案 0 :(得分:4)

  • 首先,您需要一张支持CUDA至少2.0的显卡。
  • 然后你必须从NVidia安装CUDA驱动程序。搜索 CUDA工具包。
  • 然后你需要在项目中包含CUDA dll(就像你一样) 做了Opencv dlls)
  • 然后您需要使用CV.GPU名称空间
  • 然后用适当的GPU版本替换所有功能。 在你的代码中,我没有看到任何OpenCV函数,因此没有任何内容 更换。 (但我可能会错过一些)

答案 1 :(得分:1)

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

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/