我是python和opencv的新手。我想加载一个图像(灰度)并做一些特殊的阈值处理。我希望将亮度值保持在20-30之间,并使所有其他像素的值为零(或255)。我指的是亮度值低于20且超过30的像素。
我用inrange
进行了一些测试,但没有运气。我也试过以下但是它只完成了一半的工作:
ret,img = cv.threshold(img,30,255,cv.THRESH_BINARY)
有什么建议吗?
答案 0 :(得分:0)
您可以使用cv2.inrange()
模块。可以为任何图像放置最小值和最大值。
在您的情况下,因为您使用单通道图像,您可以执行以下操作:
masked = cv2.inRange(im, 20, 30)
cv2.imshow('masked',masked)
在你的问题中,你提到cv.threshold()
做了一半的工作。你需要做两次并减去结果才能完成全部工作!
ret1, img1 = cv2.threshold(im, 20, 255, cv2.THRESH_BINARY)
ret2, img2 = cv2.threshold(im, 30, 255, cv2.THRESH_BINARY)
cv2.imshow('double_threshold', img1 - img2)