【发布时间】:2019-01-19 17:54:19
【问题描述】:
我正在尝试在 Opencv 中使用 Otsu 的方法对图像进行阈值处理:
虽然当我对其进行阈值处理时,图片的某些部分完全被白色包围,并在 Opencv 中创建并最终无法检测到图像中的所有轮廓。这是我使用ret,thresh=cv2.threshold(blurred,0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) 进行 Otsu 方法阈值处理时得到的结果:
编辑: 有些人要求提供我正在使用的代码,所以这里是:
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('Input Image', image)
cv2.waitKey(0)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.adaptiveThreshold(blurred,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY_INV,81,2)
#ret, thresh = cv2.threshold(blurred,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
#thresh_value = 70
#ret,thresh= cv2.threshold(blurred,thresh_value,255,cv2.THRESH_BINARY)
【问题讨论】:
-
这是因为图像边缘的亮度损失。捕捉更均匀照明的场景或使用不同的镜头
-
这里的问题是闪电不是轮廓或阈值。您是否仅限于此图像?您需要在这种情况下进行图像处理吗?
-
如果我能在这些条件下进行图像处理,那就太好了,因为我不能告诉每个使用它的人出去晒太阳
-
或获得更强大的灯光
-
尝试模糊/平均您的图像,例如 100x100(这将删除高频信息,只留下缓慢变化的东西,例如不均匀的照明)并从原始图像中减去模糊图像以去除缓慢变化的东西并离开文字的锐利细节...stackoverflow.com/a/27893051/2836621
标签: python-3.x opencv image-thresholding