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