接着下来再看THRESH_BINARY_INV类型,它的意思就是与THRESH_BINARY相反,比如大于阈值时THRESH_BINARY设置为最大值,THRESH_BINARY_INV类型设置为0。演示的例子如下:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图像数据
src = np.array([[100, 157, 245], [20, 51, 250], [50, 2, 200]], np.uint8)
#阈值处理
retval, dst = cv2.threshold(src, 150, 255, cv2.THRESH_BINARY_INV)
print(src)
print(retval,'\n', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果输出如下:
[[100 157 245]
[ 20 51 250]
[ 50 2 200]]
150.0
[[255 0 0]
[255 255 0]
[255 255 0]]
从这里看到,大于150的元素全部置为0,而小于等于150的置为255。它的计算公式如下:
把这个类型替换一下,看一下前面斑马的例子:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图片的路径
imgname = "imgbin1.png"
#读取图片
image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE)
#图片的高度和宽度
h,w = image.shape[:2]
print('imagesize={}-{}'.format(w,h))
#显示原图
cv2.imshow("Image",image)
#阈值分割
retval, out = cv2.threshold(image, 100, 255, cv2.THRESH_BINARY_INV)
cv2.imshow("out",out)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果输出如下:
输入图片
输出图片
如果你细心地对比前面,发现刚好倒过来了,白变黑,黑变白。
https://blog.csdn.net/caimouse/article/details/51749579
转载:https://blog.csdn.net/caimouse/article/details/101343149
查看评论