无法检测到任何白色斑点-opencv python

无法检测到任何白色斑点-opencv python,python,opencv,Python,Opencv,我只是想在图像中找到白色的圆形斑点。当我尝试使用houghcircles时,我不断地将字母和数字误认为是圆,而我只需要完整的圆,即斑点 因此,我使用自定义参数运行了这个水滴检测器代码,以查找左上角的圆形IC引脚标记。但我在“9”和“0”中不断出现黑眼圈。 它根本检测不到任何白色斑点 以下是我尝试的代码: import cv2 import numpy as np; # Read image img = cv2.imread("C:\chi4.jpg", cv2.IMREAD_GRAYSCALE

我只是想在图像中找到白色的圆形斑点。当我尝试使用houghcircles时,我不断地将字母和数字误认为是圆,而我只需要完整的圆,即斑点

因此,我使用自定义参数运行了这个水滴检测器代码,以查找左上角的圆形IC引脚标记。但我在“9”和“0”中不断出现黑眼圈。 它根本检测不到任何白色斑点

以下是我尝试的代码:

import cv2
import numpy as np;

# Read image
img = cv2.imread("C:\chi4.jpg", cv2.IMREAD_GRAYSCALE)
retval, threshold = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY)

params = cv2.SimpleBlobDetector_Params()

# Change thresholds
params.minThreshold = 10;
params.maxThreshold = 255;

blur = cv2.GaussianBlur(img,(5,5),0)

params.filterByCircularity = True
params.minCircularity = 0.2

params.filterByArea = True;
params.minArea = 1000;

ver = (cv2.__version__).split('.')
if int(ver[0]) < 3 :
    detector = cv2.SimpleBlobDetector(params)
else :
    detector = cv2.SimpleBlobDetector_create(params)

# Set up the detector with default parameters.
#detector = cv2.SimpleBlobDetector()

# Detect blobs.
keypoints = detector.detect(threshold)

# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(img, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show keypoints
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)
导入cv2
输入numpy作为np;
#读取图像
img=cv2.imread(“C:\chi4.jpg”,cv2.imread\u灰度)
retval,threshold=cv2.threshold(img,200255,cv2.THRESH_二进制)
params=cv2.SimpleBlobDetector_params()
#更改阈值
params.minThreshold=10;
params.maxThreshold=255;
模糊=cv2.高斯模糊(img,(5,5,0)
params.filterByCircularity=真
参数最小圆度=0.2
params.filterByArea=True;
参数minArea=1000;
版本=(cv2.版本.拆分('.'))
如果int(ver[0])<3:
检测器=cv2.SimpleBlobDetector(参数)
其他:
检测器=cv2.SimpleBlobDetector_创建(参数)
#使用默认参数设置检测器。
#检测器=cv2.SimpleBlobDetector()
#检测斑点。
关键点=检测器。检测(阈值)
#将检测到的斑点绘制为红色圆圈。
#cv2.DRAW_匹配_标志_DRAW_RICH_关键点确保圆的大小与水滴的大小相对应
im_with_keypoints=cv2.drawKeypoints(img,keypoints,np.array([]),(0,0255),cv2.DRAW_匹配_标志_DRAW_RICH_keypoints)
#显示关键点
cv2.imshow(“关键点”,带关键点的im)
cv2.等待键(0)
这是我的输出图像:

红色圆圈是检测到的。我想检测顶部用蓝色标记的白色圆形斑点

我尝试更改阈值参数,但仍然没有效果。请让我知道我哪里做错了,或者建议改进输出。
提前感谢:D

斑点通常假定为灰色/黑色。在你的例子中,字母边上的斑点是黑色的。然而,你想要的斑点是白色的。因此不被承认

在代码中,必须将第四行更改为:

retval, threshold = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY_INV)
我在以下方面采用了相同的方法:

我在以下图像上执行了水滴检测:

但没有发现任何斑点:

我将二进制图像反转为以下内容:

现在我能够检测到它们,如图所示:


通常假定斑点为灰色/黑色。在你的例子中,字母边上的斑点是黑色的。然而,你想要的斑点是白色的。因此不被承认

在代码中,必须将第四行更改为:

retval, threshold = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY_INV)
我在以下方面采用了相同的方法:

我在以下图像上执行了水滴检测:

但没有发现任何斑点:

我将二进制图像反转为以下内容:

现在我能够检测到它们,如图所示:


您能上传原始图像吗?这是原始图像。使用usb数码显微镜拍摄的照片你能上传原始图像吗?这是原始图像。使用usb数字显微镜拍摄,谢谢。成功了!我从来不知道斑点探测器只在黑色/灰色斑点上工作!谢谢成功了!我从来不知道斑点探测器只在黑色/灰色斑点上工作!