gpt4 book ai didi

python - 当我们通过掩码的阈值图像时,cv2.normalize 实际上会做什么?

转载 作者:行者123 更新时间:2023-12-02 17:28:59 30 4
gpt4 key购买 nike

我正在浏览某人的代码,我没有得到一些东西:

  • 在某些品牌标签中为条形码创建掩码后,需要创建该掩码的阈值图像(因为当我们看到图像时它看起来相同)和
  • 然后使用 cv2.normalize() 对阈值图像进行归一化,归一化函数实际上会做什么

  • 1)创建一个面具:
    import imutils
    import cv2
    import numpy as np

    image = cv2.imread("/home/nayantara/Desktop/beinghuman.jpg")
    mask = np.zeros(image.shape, dtype = "uint8")
    cv2.rectangle(mask, (700, 1038), (1733 , 2111),(255,255,255),-1)

    2)获取掩码阈值:
    ret,barcode_mask_thresh = cv2.threshold(mask,127,255,cv2.THRESH_BINARY)

    3)归一化阈值图像:
    cropped_barcode_mask = cv2.normalize(src=barcode_mask_thresh, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)

    最佳答案

    当你有一个阈值图像时

    ret,barcode_mask_thresh = cv2.threshold(mask,127,255,cv2.THRESH_BINARY)

    您将只有 2 个可能的值,0 或 255(至少在这种情况下)。然后,当您使用 NORM_MIN_MAX 进行标准化时您将获得数组/图像的最小值和最大值并重新缩放数组,使最小值成为可能的最小值,最大值将成为可能的最大值。

    例如,考虑以下数字数组:
    eg = np.array([10, 20, 30, 10, 45, 90])

    如果我们进行归一化,算法将缩放它们以适应完整范围,这意味着,最小值 10 将是可能的最小值,而 0 和 90 是最大值,即 255。如果我们这样做:
    cv2.normalize(eg, dst=None, alpha=0, beta=255,norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)

    我们得到:
    array([[  0], [ 32], [ 64], [  0], [112], [255]], dtype=uint8)

    回到您的具体情况,您只能有 2 个可能的数字,这已经是可能的最小值和可能的最大值,这导致了 3 种可能的情况。

    1) 数组 中有 0 和 255 ,它会像:
    eg = np.array([0, 255, 0, 255, 255])
    cv2.normalize(eg, dst=None, alpha=0, beta=255,norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)

    这使:
    array([[  0], [ 255], [ 0], [  255], [255]], dtype=uint8)

    2) 所有数字均为 0 最小值和最大值相同,结果将是一个 0 数组。

    3) 所有号码均为 255 ,最小值和最大值是相同的,它再次只给出 0。

    底线,这个函数在这种情况下基本上是没用的,除非你想把一个完全白色的图像转换成一个黑色的图像(所有数字都是 255 并将其转换为 0)在任何其他情况下结果将完全相同,因此不需要。

    关于python - 当我们通过掩码的阈值图像时,cv2.normalize 实际上会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57093347/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com