Python OpenCV最佳阈值

时间:2020-10-09 00:11:54

标签: python opencv-python

我正在尝试使用Otsu阈值检测来检测图像数据集中的roi。虽然在某些情况下取得了预期的结果,但在某些情况下却没有那么好。我正在使用下面的代码。

import cv2 as cv
import numpy as np

path  = "./images/{}.png".format

for num in range(1000):
    filename  = path(num)
    img       = cv.imread(filename, cv.IMREAD_GRAYSCALE)
    res       = cv.threshold(img, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)[1]
    res       = np.hstack((img, res))
    cv.imwrite(filename.replace(".png", "_.png"), res)

虽然这些结果可以接受

enter image description here enter image description here

这些肯定需要改进

enter image description here enter image description here

如何改善我的代码?

1 个答案:

答案 0 :(得分:0)

我建议使用 GRIP软件来实现两个图像处理管道: 一个执行阈值查找中心点,另一个执行所有其他圆。
然后可以将这些管道生成为Python OpenCV代码,您可以将它们导入到您的代码中(我已经为您完成了)。

以下是中心管道: 它执行一个简单的HSV阈值,然后执行find blob命令
Center_Pipeline


以下是圆形管道:
它执行Laplacian transform(这是一种单面傅立叶变换,用于检测代表圆的边缘的对比度变化),然后执行Canny边缘检测以找到圆的边缘,然后找到并过滤轮廓的圈子。要找到圆的数量,可以将轮廓的数量除以2(与每个Laplacian环相关的内圈和外圈) Ring_Pipeline


这是link,用于下载GRIP软件

这是我所有文件(包括自动生成的Python图像处理管道)的link

相关问题