gpt4 book ai didi

c# - Emgu 在调用 AdaptiveThreshold 函数后意外退出

转载 作者:行者123 更新时间:2023-12-02 16:56:28 44 4
gpt4 key购买 nike

我对emgu完全陌生。我一直在寻找解决此问题的方法,但找不到任何解决方案。我正在尝试使用内置的自适应阈值函数对给定图像进行阈值处理,但程序无一异常(exception)地退出

代码 :

 public Image<Gray, byte> AdaptiveThreshold(Image<Bgr, byte> bmp, int windowSize)
{
Image<Gray, byte> gray = new Image<Gray, byte>(bmp.ToBitmap());

Image<Gray, byte> bw = gray.ThresholdAdaptive(new Gray(255), Emgu.CV.CvEnum.ADAPTIVE_THRESHOLD_TYPE.CV_ADAPTIVE_THRESH_MEAN_C, Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU, windowSize, new Gray(0.03));
return bw;
}

函数调用:
this.pictureBox1.Image = r.AdaptiveThreshold(this.bmp, 15).ToBitmap(); // here where the application exit with no error and with no output in pictureBox1
r is an object of class which contains AdaptiveThreshold defined above
我将所有未管理的二进制文件从 bin 文件夹 emgucv-windows-universal-cuda 2.9.0.1922\bin\x86 复制到我的调试文件夹中,我还将 Emgu Dlls 添加到我的项目引用 Emgu.CV、Emgu.CV.UI、Emgu 中。实用程序
我还将我的目标平台设置为 x86
我正在 windows 8 下的 Visual Studio 2013 上工作。

最佳答案

似乎由于某种原因,在使用 Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU 时应用程序确实退出了。作为自适应阈值的阈值方法。对此的确切原因我还不得而知。

虽然通过阅读 文档 关于自适应阈值功能的 Open CV 我注意到这不是传递给此函数的有效值。见 this页:

参数:

– 源 8 位单 channel 图像。

目的地 – 与 src 大小和类型相同的目标图像。

最大值 – 分配给条件为的像素的非零值
使满意。请参阅下面的详细信息。

自适应方法 – 要使用的自适应阈值算法,ADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C。请参阅下面的详细信息。

阈值类型 – 阈值类型,必须是 THRESH_BINARY 或 THRESH_BINARY_INV 。
blockSize – 用于计算像素阈值的像素邻域的大小:3、5、7 等。

中号 – 从平均值或加权平均值中减去常数(详见下文)。通常,它是正数,但也可能为零或负数。

所以你必须调整你用过的thresholdTypeEmgu.CV.CvEnum.THRESH.CV_THRESH_BINARYEmgu.CV.CvEnum.THRESH.CV_THRESH_BINARY_INV让您的功能正常工作。

关于c# - Emgu 在调用 AdaptiveThreshold 函数后意外退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28188897/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com