首页 Paddle Inference 帖子详情
请问在识别图片时,怎么把图片转成一维数组?数据结构是什么样的?
收藏
快速回复
Paddle Inference 问答推理 3828 5
请问在识别图片时,怎么把图片转成一维数组?数据结构是什么样的?
收藏
快速回复
Paddle Inference 问答推理 3828 5

在使用c++ 学习目标识别时,用opencv拿到图片后,怎么把一张图片转成一维float类型数组?数据结构是什么样的?为啥我在官网上居然找不到相关的信息?

0
收藏
回复
全部评论(5)
时间顺序
由兀C
#2 回复于2021-07

已将您的问题提到issue中,请耐心等待

0
回复
由兀C
#3 回复于2021-07

#include
#include
#include
#include

namespace ImageUtils {
// imagenet preprocessing function
cv::Mat preprocess_image(cv::Mat image) {
cv::Mat float_image;
image.convertTo(float_image, CV_32FC3);

float mean[] = {103.939, 116.779, 123.68};

for (int y = 0; y < float_image.cols; ++y) {
for (int x = 0; x < float_image.rows; ++x) {
cv::Vec3f pix_value = float_image.at(y, x);

float red = pix_value.val[0] - mean[0];
float green = pix_value.val[1] - mean[1];
float blue = pix_value.val[2] - mean[2];

float_image.at(y, x) = cv::Vec3f(blue, green, red);
}
}

return float_image;
}

std::vector cv_mat_to_float_array(cv::Mat float_image) {
std::vector array;

array.assign((float*)float_image.datastart, (float*)float_image.dataend);

return array;
}
} // namespace ImageUtils

std::vector preprocess_image(cv::Mat image) {
cv::Mat resized_image;
cv::Mat rgb_image;
cv::Size model_size = cv::Size(224, 224); // for example, 1, 3, 224, 224
cv::resize(image, resized_image, model_size);
cv::cvtColor(resized_image, rgb_image, cv::COLOR_BGR2RGB);

cv::Mat float_image = ImageUtils::preprocess_image(rgb_image);
std::vector input_vector =
ImageUtils::cv_mat_to_float_array(float_image);

return input_vector;
}

 

其中图像内容cv::Mat转成一维数组vector

0
回复
由兀C
#4 回复于2021-07

图像内容cv::Mat转成一维数组vector

0
回复
由兀C
#5 回复于2021-07

会涉及到一些opencv预处理。试试这个满足需求吗 https://gist.github.com/zhangjun/3873ecb8a4b3e6782731eaf4f556c42f

0
回复
A
AIStudio771024
#6 回复于2021-07
由兀C #5
会涉及到一些opencv预处理。试试这个满足需求吗 https://gist.github.com/zhangjun/3873ecb8a4b3e6782731eaf4f556c42f

非常感谢~!

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户