kcv_normalAndNCHW是基于用户自研接口normalAndNCHW进行优化的,主要用于归一化操作,其结果用于深度学习模型输入。
1 2 | int kcv_normalAndNCHW( cv::Mat &mat, const std::array<float, 3> &mean, const std::array<float, 3> &std, float *outBuf, int mode); |
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
mat |
输入的图像。 |
非空,浮点类型,3通道 |
输入 |
mean |
每个通道的均值。 |
小于1的浮点数 |
输入 |
std |
每个通道的标准差。 |
小于1的浮点数 |
输入 |
mode |
操作模式。 |
|
输入 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <gtest/gtest.h> #include <opencv2/opencv.hpp> #include <algorithm> #include "KPCV/kcv.h" TEST(normalAndNCHW, normal) { Mat m_mat = src.clone(); m_mat.convertTo(m_mat, CV_32F, 1.0 / 255); std::array<float, 3> mean = {0.25603, 0.29465, 0.3477}; std::array<float, 3> std = {0.18766, 0.16251, 0.19558}; int testTime = 100; cv::TickMeter tm; int img_h = m_mat.rows; int img_w = m_mat.cols; int hw = img_h * img_w; int pc = img_h * img_w * 3; std::vector<float> simple1_opencv(pc), simple2_opencv(pc), withMeanStd1_opencv(pc), withMeanStd2_opencv(pc); // simple1 normalAndNCHW(m_mat, simple1_opencv.data(), 0); // simple2 normalAndNCHW(m_mat, simple2_opencv.data(), 1); // withMeanStd1 normalAndNCHW(m_mat, mean, std, withMeanStd1_opencv.data(), 2); // withMeanStd2 normalAndNCHW(m_mat, mean, std, withMeanStd2_opencv.data(), 3); } |