当前位置:网站首页>OpenCV DNN blogFromImage() detailed explanation
OpenCV DNN blogFromImage() detailed explanation
2022-08-02 00:07:00 【New_Tank】
OpenCV3.x版本,增加了DNN模块,Supports direct loading of models trained by deep learning frameworks.How to pass data into the model,This is to seeblogFromImage()函数.

1. 背景知识:
To get correct predictions from deep neural networks,The data needs to be preprocessed first.Process the image data into the data format required by the model.These preprocessing usually include:
A. 均值减法(Mean Subtraction).That is the overall pixel minus the mean.
B. 缩放(Scaling).通过缩放系数(scalefactor)Scales image pixel values.
C. 把数据shapeAdjust to the format required by the model.
均值减法:
Mean subtraction is used to adapt to lighting transformations(combat illumination changes).因此,We can think of mean subtraction as a technique to assist convolutional neural networks.Before starting to train our own deep neural network,Need to count the images we want to train onRGBAverage pixels of the three channels(average pixel)
2.具体使用:
Python:
cv.dnn.blobFromImage(image[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]]) ->retval
C++:
| Mat cv::dnn::blobFromImage | ( | InputArray | image, |
| double | scalefactor = 1.0, | ||
| const Size & | size = Size(), | ||
| const Scalar & | mean = Scalar(), | ||
| bool | swapRB = false, | ||
| bool | crop = false, | ||
| int | ddepth = CV_32F | ||
| ) |
参数:
| image | input image (with 1-, 3- or 4-channels).The image that will be fed into the neural network for processing or classification |
| size | spatial size for output image 这个参数是我们神经网络在训练的时候要求输入的图片尺寸 |
| mean | scalar with mean values which are subtracted from channels. Values are intended to be in (mean-R, mean-G, mean-B) order if 需要将图片整体减去的平均值,如果我们需要对RGB图片的三个通道分别减去不同的值,那么可以使用3组平均值,如果只使用一组,那么就默认对三个通道减去一样的值.减去平均值(mean):为了消除同一场景下不同光照的图片,对我们最终的分类或者神经网络的影响,我们常常对图片的R、G、B通道的像素求一个平均值,然后将每个像素值减去我们的平均值,这样就可以得到像素之间的相对值,就可以排除光照的影响. |
| scalefactor | multiplier for 当我们将图片减去平均值之后,还可以对剩下的像素值进行一定的尺度缩放,它的默认值是1,如果希望减去平均像素之后的值,全部缩小一半,那么可以将scalefactor设为1/2 |
| swapRB | flag which indicates that swap first and last channels in 3-channel image is necessary. OpenCVThe picture channel order in is BGR,But sometimes the order of the mean assumptions isRGB,所以如果需要交换R和G,那么就要使swapRB=true |
| crop | flag which indicates whether image will be cropped after resize or not |
| ddepth | Depth of output blob. Choose CV_32F or CV_8U. |
输出:
Returns
4-dimensional Mat with NCHW dimensions order.
例子:
import cv2
import numpy as np
import sys
#Sam add it. load mobilenet model.
image = cv2.imread("E:\\current\\svn_Python_home\\OpenCV_Study\\Example\\DNN_Sample\\Images\\voc_boat_pi.jpg")
if(image is None):
sys.exit(0)
net =cv2.dnn.readNetFromTensorflow("E:\current\svn_Python_home\OpenCV_Study\Example\DNN_Sample\models\mobilenet_v1_1.0_224_frozen.pb")
image = cv2.resize(image, (300,300))
blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300), (104.0, 177.0, 123.0))
print("blob shape:", blob.shape)
print("Success")blob shape: (1, 3, 300, 300)
边栏推荐
- The Spark of Sql join on the and and where
- yay 报错 response decoding failed: invalid character ‘<‘ looking for beginning of value;
- ansible模块--copy模块
- 洞见云原生微服务及微服务架构浅析
- Loading configuration of Nacos configuration center
- EasyExcel的简单读取操作
- Flink学习第三天——一文带你了解什么是Flink流?
- solidity
- cdh6 opens oozieWeb page, Oozie web console is disabled.
- mysql8安装make报错如何解决
猜你喜欢

Zadig 面向开发者的自测联调子环境技术方案详解

一款简洁的文件传输工具

GIF制作-灰常简单的一键动图工具

Use Jenkins for continuous integration, this knowledge point must be mastered

security CSRF漏洞保护

oozie startup error on cdh's hue, Cannot allocate containers as requested resource is greater than maximum allowed

2022 6th Strong Net Cup Part WP

获取小猪民宿(短租)数据

Secondary Vocational Network Security Competition B7 Competition Deployment Process

20220725资料更新
随机推荐
LocalDateTime转为Date类型
使用Jenkins做持续集成,这个知识点必须要掌握
Spark Sql之join on and和where
Classical Literature Reading--DLO
信息系统项目管理师必背核心考点(五十七)知识管理工具
Chapter 11 Working with Dates and Times
An interview question about iota in golang
洞见云原生微服务及微服务架构浅析
numpy.unique
如何重装Win11?一键重装Win11方法
【Leetcode】470. Implement Rand10() Using Rand7()
【MySQL系列】MySQL数据库基础
Programmer is still short of objects? A new one is enough
numpy.isclose
Architecture basic concept and nature of architecture
Appears in oozie on CDH's hue, error submitting Coordinator My Schedule
mysql8安装make报错如何解决
asyncawait和promise的区别
经典文献阅读之--DLO
1个月写900多条用例,二线城市年薪33W+的测试经理能有多卷?