opencv图片的二值化操作

        在图像处理领域中,二值化操作是一种非常基础且重要的技术。它将灰度图像或彩色图像转换为仅包含两种像素值的图像,即黑色和白色(或者更一般地说,前景和背景)。这种操作在处理图像时极大地简化了图像数据的复杂度,使得后续的图像分析和处理步骤变得更加高效和直观。

        二值化操作的核心在于选择一个合适的阈值,这个阈值决定了哪些像素值被归为前景(通常是白色),哪些被归为背景(通常是黑色)。阈值的选择可以根据具体需求采用固定值、自适应算法或基于图像统计的方法来确定。

        本文旨在介绍如何使用Python及其图像处理库来实现图像的二值化操作,包括基础的二值化方法、自适应阈值方法以及一些高级技巧。通过学习和实践这些技术,你将能够更好地理解和应用二值化在图像处理中的重要作用。

        通过基本的像素处理图像的遍历可以实现设置阈值将图片二值化:

import cv2

def main(filename):
    img = cv2.imread(filename,flags=0)
    for i in range(len(img)):
        for j in range(len(img[i])):
            if img[i][j] < 150:
                img[i][j] = 0
            else:
                img[i][j] = 255
    cv2.imshow('window',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

main('f1.png')

        如图即为二值化后的图片,例如在检测牙垢,拍胸片等方面可以更加便于观察。

        在以上的代码中,设置阈值为150,即低于阈值的相对来说更加暗一点,那么就让它变得更暗。反之变得更亮。

        如果我们想让亮的地方变暗,暗的地方变亮,只需要把if的判断条件修改为img[i][j]>150即可

import cv2

def main(filename):
    img = cv2.imread(filename,flags=0)
    for i in range(len(img)):
        for j in range(len(img[i])):
            if img[i][j] > 150:
                img[i][j] = 0
            else:
                img[i][j] = 255
    cv2.imshow('window',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

main('f1.png')

        而在python的opencv包中也提供了一些方法,让我们快速将图片二值化,同时设置阈值。

import cv2

def main(filename):
    img = cv2.imread(filename,flags=0)
    t,img = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
    cv2.imshow('window',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

main('f1.png')

这样就可以更快得将图片二值化,如果想反二值化,就把最后一个参数设置为cv2.THRESH_BINARY_INV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值