Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测这些白色斑点?_C#_Opencv - Fatal编程技术网

C# 如何检测这些白色斑点?

C# 如何检测这些白色斑点?,c#,opencv,C#,Opencv,我有一个图像,我需要计算白点。我尝试了此代码,但效果很差: CircleSegment[] circles; Mat dst = new Mat(); Mat train = new Mat(path, ImreadModes.Grayscale); Cv2.GaussianBlur(train, dst, new OpenCvSharp.Size(1, 1), 4, 550); circles = Cv2.HoughCircles(dst, HoughMethods.Gradient, 5,

我有一个图像,我需要计算白点。我尝试了此代码,但效果很差:

CircleSegment[] circles;
Mat dst = new Mat();
Mat train = new Mat(path, ImreadModes.Grayscale);

Cv2.GaussianBlur(train, dst, new OpenCvSharp.Size(1, 1), 4, 550);
circles = Cv2.HoughCircles(dst, HoughMethods.Gradient, 5, 50, 1, 60, 1, 60);

for (int i = 0; i < circles.Length; i++)
{
    count++;
    Cv2.Circle(dst, (OpenCvSharp.Point)circles[i].Center, (int)circles[i].Radius, new Scalar(125), 2);
}

using (new Window("Circles", dst))
{
    Cv2.WaitKey();
}
MessageBox.Show(count.ToString(), "Result", MessageBoxButtons.OK);
CircleSegment[]圆圈;
Mat dst=新Mat();
Mat列=新Mat(路径,ImreadModes.灰度);
GaussianBlur(列车,dst,新OpenCvSharp.尺寸(1,1),4550);
圆=Cv2.霍夫圆(dst,霍夫方法.梯度,5,50,1,60,1,60);
对于(int i=0;i
我附加原始图像,结果如下:


二值化后,您只需将图像馈送到。有关更多信息,请参阅相应的OpenCV函数

这是获得白点数量的最小代码:

使用OpenCvSharp;
命名空间OpenCVSharpTest
{
班级计划
{
静态void Main(字符串[]参数)
{
使用var img=new Mat(“z4BL7.png”,ImreadModes.Grayscale);
阈值(img,img,0,255,ThresholdTypes.Otsu);
使用var标签=new Mat();
int ncc=Cv2.连接部件(img、标签);
System.Console.WriteLine(“白点数:+ncc.ToString());
}
}
}
控制台输出为:

白点数量:551
由于我在Python(OpenCV的API)方面更为熟练,尤其是在可视化方面,下面是相应的代码:

导入cv2
img=cv2.imread('z4BL7.png',cv2.imread_灰度)
img=cv2.阈值(img,0255,cv2.阈值)[1]
ncc,标签=cv2。连接组件(img)
打印('白色斑点数:',ncc)
#只是为了形象化
将matplotlib.pyplot作为plt导入
plt.imshow(标签)
plt.show()
控制台输出是相同的,下面是可视化:

-----------------------------------------------------
系统信息
-----------------------------------------------------
平台:Windows-10-10.0.16299-SP0
Visual Studio教授2019:16.4.4
OpenCV4.Windows:4.5.2.20210404
Python:3.9.1
PyCharm:2021.1.1
Matplotlib:3.4.1
OpenCV:4.5.1
-----------------------------------------------------

我认为问题在于您的圆不是完美的圆,您可能需要使用countour检测器使用另一个工具进行测试