当前位置: 首页 > article >正文

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)

http://www.kler.cn/a/375988.html

相关文章:

  • 【C/C++】qsort函数的学习与使用
  • Centos7中docker安装教程-详细版
  • 直流电机在液压泵领域的应用
  • python代码实现了一个二维粒子系统的模拟,模拟粒子在离散空间中的随机运动和相互作用
  • 安装fpm,解决*.deb=> *.rpm
  • metasploit/modules/payloads 有哪些模块,以及具体使用案例
  • Unity项目使用的.net版本
  • 【网络】HTTP(超文本传输协议)详解
  • Java面试题十五
  • 基于大数据的智能家居销量数据分析
  • 基于OSS搭建在线教育视频课程分享网站
  • 提升效率:中小企业常用的8款任务管理工具
  • 官方源码,LVDS中判断数据是否对齐时钟上升沿的方法解析
  • kkfileview4.2.1 LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz
  • 【25届秋招】蚂蚁集团 0825算法岗笔试
  • Nginx开发实战——网络通信(一)
  • 免费开放商用!Stability AI推轻量级AI绘画利器 Stable Diffusion 3.5 Medium模型
  • 在线体验Sketch中文版,免费下载即刻上手!
  • ubuntu怎么查看端口占用进程
  • Vue3访问页面时自动获取数据
  • 真题与解析 202112三级 青少年软件编程(Python)考级
  • SpringBoot 如何同时接收文件以及json参数
  • Spring Boot应用MongoDB
  • RabbitMQ的原理和集成使用
  • 秘钥认证与分发脚本(免密码登录)
  • Node.js——fs模块-同步与异步