Opencv CV2二值化处理图像

Opencv CV2二值化处理图像,opencv,image-processing,cv2,image-thresholding,Opencv,Image Processing,Cv2,Image Thresholding,我正在尝试对图像设置阈值,并将其转换为文本图像的二值化形式(1-前景和0-背景)。 我已经进行了几个图像处理步骤,在最后阶段,我在图像上使用了二进制阈值。但是,它会生成完全白色(所有像素值均为255)的图像 将numpy导入为np 将cv2作为cv导入 从matplotlib导入pyplot作为plt #加载图像文件 img=cv.imread('img/Merani.png') #定义结构元素 kernel=np.ones((1,20),np.uint8)#用于打开和关闭的内核 kernel2

我正在尝试对图像设置阈值,并将其转换为文本图像的二值化形式(1-前景和0-背景)。 我已经进行了几个图像处理步骤,在最后阶段,我在图像上使用了二进制阈值。但是,它会生成完全白色(所有像素值均为255)的图像

将numpy导入为np
将cv2作为cv导入
从matplotlib导入pyplot作为plt
#加载图像文件
img=cv.imread('img/Merani.png')
#定义结构元素
kernel=np.ones((1,20),np.uint8)#用于打开和关闭的内核
kernel2=np.ones((5,5),np.uint8)#用于secong闭包的内核
#第一步图像平滑
高斯=cv.高斯模糊(img,(3,3),0)#图像平滑
#第二步打开
打开=cv.morphologyEx(高斯,cv.MORPH_打开,内核)
#第三步结束
闭合=cv.morphologyEx(高斯,cv.MORPH\u闭合,核)
#第四步梯度
梯度=cv.morphologyEx(高斯,cv.MORPH_梯度,核)
差异=关闭-打开
#第五步第二关
closing2=cv.morphologyEx(梯度,cv.MORPH_CLOSE,核2)
#第六步-二值化-阈值化
ret2,threshold=cv.threshold(closing2,0255,cv.THRESH_二进制)
#绘图结果
plt.子地块(421)、plt.imshow(img)、plt.title(“原始图像”)
plt.xticks([]),plt.yticks([])
plt.子地块(422)、plt.imshow(高斯)、plt.标题(“高斯平滑”)
plt.xticks([]),plt.yticks([])
plt.子地块(423)、plt.imshow(开幕式)、plt.标题(“MM开幕式”)
plt.xticks([]),plt.yticks([])
plt.子地块(424)、plt.imshow(收盘)、plt.title(“MM收盘”)
plt.xticks([]),plt.yticks([])
plt.子地块(425)、plt.imshow(差异)、plt.title(“差异”)
plt.xticks([]),plt.yticks([])
plt.子地块(426)、plt.imshow(渐变)、plt.标题(“MM渐变”)
plt.xticks([]),plt.yticks([])
plt.子地块(427)、plt.imshow(closing2)、plt.title(第二次交割)
plt.xticks([]),plt.yticks([])
plt.子地块(428)、plt.imshow(基本要求)、plt.标题(“基本要求-大津”)
plt.xticks([]),plt.yticks([])
plt.show()
好心的建议,我做错了什么,我该如何修复它


看起来你不是在使用大津,只是用0设定阈值,试着改变
ret2,threshold=cv.threshold(closing2,0255,cv.THRESH\u BINARY)
cv.threshold(closing2,0255,cv.THRESH\u BINARY+cv.THRESH\u Otsu)
看起来你不是在使用大津,只是用0设定阈值,试着改变
ret2,阈值=cv.阈值(closing2,0255,cv.THRESH_BINARY)
to
cv.阈值(closing2,0255,cv.THRESH_BINARY+cv.THRESH_OTSU)