Emgu Canny很慢。该怎么办?

时间:2015-08-10 18:32:08

标签: emgucv

我对EMGU 3.0和canny有一个非常困难的问题。

我正在尝试使用Canny方法来检测边缘,但它变得非常慢以至于无法使用。

一切都很好和实时没有Canny系列(下面已注释掉),但是,如果我取消评论" CvInvoke.Canny ......&# 34 ;.行基本上整个程序来到一个残酷的停止!我安装了最新的emgu 3.0并正确引用了dll' s和cvextern.dll。

构建解决方案时有无错误

仅供参考我从显微镜摄像头拍摄图像(使用toupcam.dll),效果非常好。

以下是问题的代码段。同样,这完全适用 直到 我取消注释下面的CvInvoke.Canny行。然后,它基本上停止了...... 小号 到底是什么?

        private void OnEventImage()
    {
        if (bmp_ != null)
        {
            BitmapData bmpdata = bmp_.LockBits(new Rectangle(0, 0, bmp_.Width, bmp_.Height), ImageLockMode.WriteOnly, bmp_.PixelFormat);

            uint nWidth = 0, nHeight = 0;
            toupcam_.PullImage(bmpdata.Scan0, 24, out nWidth, out nHeight);

            bmp_.UnlockBits(bmpdata);

            pictureBox1.Image = bmp_;
            pictureBox1.Invalidate();

            Image<Bgr, Byte> frameimg = new Image<Bgr, Byte>(bmp_);
            iboxEdge.Image = frameimg;
            iboxEdge.Invalidate();

            Image<Gray, Byte> grayimg = new Image<Gray, byte>(frameimg.Bitmap);
            Mat edgeimg = grayimg.Mat;

            //CvInvoke.Canny(edgeimg, edgeimg, 100, 200, 3, false);

            iboxCanny.Image = edgeimg;
            iboxCanny.Invalidate();
        }
    }

0 个答案:

没有答案