cv2的各种阈值处理,首先转灰度图,根据像素强度和阈值(要么大于阈值保留、要么小于阈值保留,或者置为最大值255,或者截断等等对图像进行处理

目前学习到这里,感觉是用于物体检测等进行的图片边界分割;另外之前学PS时也常常涉及色调等的处理,感觉这是可以通过代码自己调节的

代码

import cv2

img_dir = r"D:\python\ims.webp"
img = cv2.imread(img_dir)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, img2 = cv2.threshold(img_gray, 112, 255, cv2.THRESH_BINARY)
ret3, img3 = cv2.threshold(img_gray, 112, 255, cv2.THRESH_BINARY_INV)
ret4, img4 = cv2.threshold(img_gray, 112, 255, cv2.THRESH_TRUNC)
ret5, img5 = cv2.threshold(img_gray, 112, 255, cv2.THRESH_TOZERO)
ret6, img6 = cv2.threshold(img_gray, 112, 255, cv2.THRESH_TOZERO_INV)
ret9, img9 = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
img7 = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 3)
img8 = cv2.adaptiveThreshold(img_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 3)

img_dict = {'img': img, 'gray': img_gray,
            'BINARY': img2, 'BINARY_INV': img3,
            'TRUNC': img4,
            'TOZERO': img5, 'TOZERO_INV': img6,
            'adaptive': img7, 'adaptive_g': img8,
            'OTSU': img9}
# 展示图片
for k, v in img_dict.items():
    cv2.imshow(k, v)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图片
dir_ = "D:/python/arm/img_thr"
for k, v in img_dict.items():
    cv2.imwrite(f"{dir_}/{k}.jpg", v)

img、gray、BINARY、BINARY_INV、TRUNC

TOZERO、TOZERO_INV、adaptive、adaptive_g、OTSU

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐