自学内容网 自学内容网

cv.dnn.blobFromImage参数详解

例如:

image = cv.imread('imgs/img.png')
blob = cv.dnn.blobFromImage(image, scalefactor=1.0, size=(224, 224), mean=(0, 0, 0), swapRB=True, crop=False)
print("原始图像形状:", image.shape)
print("Blob数据形状:", blob.shape)

1. image

  • 含义:这是输入的原始图像数据,通常是通过cv.imread等函数读取的图像。图像可以是灰度图(单通道,数据类型通常为uint8)或彩色图(常见的 RGB 三通道图像,数据类型也为uint8)。
import cv2 as cv

# 读取一张彩色图像
image = cv.imread('your_image.jpg')

2. scalefactor

  • 含义:这个参数用于对图像数据进行缩放。它是一个浮点数,将原始图像的每个像素值乘以这个scalefactor。例如,如果scalefactor = 1.0,则图像像素值保持不变;如果scalefactor = 0.5,则图像每个像素值都变为原来的一半。这个参数在将图像数据归一化到特定范围时很有用,比如在一些网络中需要将像素值范围从[0, 255]调整到[0, 1]或其他范围时,可以通过设置合适的scalefactor来实现。
# 将图像像素值缩小为原来的0.5倍
blob = cv.dnn.blobFromImage(image, scalefactor=0.5, size=(224, 224), mean=(0, 0, 0), swapRB=True, crop=False)

也可以这样 

cv.dnn.blobFromImage(bgr, 1 / 255.0, (640, 640), swapRB=True,crop=False)

3. size

  • 含义:它是一个元组(height, width),指定了转换后图像的大小。原始图像会被调整(通常是通过缩放和裁剪等操作)到这个指定的尺寸。这个尺寸是根据深度学习网络输入层的要求来确定的,不同的网络模型可能需要不同的输入图像大小,因此需要根据实际使用的网络来设置size参数。
# 将图像转换为224x224大小的图像
blob = cv.dnn.blobFromImage(image, scalefactor=1.0, size=(224, 224), mean=(0, 0, 0), swapRB=True, crop=False)

4. mean

  • 含义mean是一个元组(meanB, meanG, meanR),用于对图像进行去均值操作。在深度学习中,为了提高模型的稳定性和泛化能力,通常会对图像进行去均值处理。这个操作是在每个通道上分别进行的,即从图像的蓝色通道(B)、绿色通道(G)和红色通道(R)的每个像素值中分别减去对应的mean值。例如,如果mean=(128, 128, 128),则会从蓝色通道的每个像素值中减去 128,从绿色通道的每个像素值中减去 128,从红色通道的每个像素值中减去 128。
# 对图像进行去均值操作,每个通道减去均值127
blob = cv.dnn.blobFromImage(image, scalefactor=1.0, size=(224, 224), mean=(127, 127, 127), swapRB=True, crop=False)

4. swapRB

  • 含义:这是一个布尔值参数,用于交换图像的红色(R)和蓝色(B)通道。在 OpenCV 中,图像的存储顺序通常是 BGR,而在一些深度学习模型中,可能需要 RGB 顺序的图像数据。如果swapRB=True,则在转换图像时会将 BGR 顺序转换为 RGB 顺序;如果swapRB=False,则保持图像的 BGR 顺序不变。
# 交换图像的R和B通道
blob = cv.dnn.blobFromImage(image, scalefactor=1.0, size=(224, 224), mean=(0, 0, 0), swapRB=True, crop=False)

5. crop

  • 含义:这也是一个布尔值参数,用于确定是否对图像进行裁剪。如果crop=True,在调整图像大小时,会根据指定的size对图像进行裁剪,以获取精确尺寸的图像;如果crop=False,则会通过缩放图像来尽量匹配指定的size,可能不会得到精确尺寸的图像,但会保留原始图像的完整内容,只是尺寸可能会有所不同。
# 不对图像进行裁剪,只进行缩放
blob = cv.dnn.blobFromImage(image, scalefactor=1.0, size=(224, 224), mean=(0, 0, 0), swapRB=True, crop=False)

原文地址:https://blog.csdn.net/m0_53291740/article/details/143360779

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!