将 OpenCV 灰度 Mat 转换为 Caffe blob
Converting OpenCV grayscale Mat to Caffe blob
我已经 following an example 有人提到我如何将 OpenCV Mat
转换为我可以从中进行预测的 Caffe 对象。据我了解,第一部分缩放图像,然后初始化 caffe class TransformationParameter
:
const float img_to_net_scale = 0.0039215684;
TransformationParameter input_xform_param;
input_xform_param.set_scale( img_to_net_scale );
DataTransformer<float> input_xformer( input_xform_param, TEST );
然后,将OpenCV Mat "patch"转换为"input_blob"。我已经更改了这部分,因为我已经以灰度而不是彩色加载了我的图像。
cv::Mat patch = cv::imread( input_file_str, CV_LOAD_IMAG_GRAYSCALE );
Blob<float> input_blob;
input_blob.Reshape(1, patch.channels(), patch.rows, patch.cols );
input_xformer.Transform( patch, &input_blob );
最后,我不太确定这部分的作用 - 如果我已经将我的 OpenCV Mat 转换为 Caffe blob,为什么我需要推回 "input" 向量并将其传递给互联网?我不能将 input_blob 直接传递到网络中以取回我的预测吗?
std::vector<Blob<float>*> input;
input.push_back( &input_blob );
std::vector<Blob<float>*> output = net->Forward( input );
您需要 push_back
您的 input_blob
才能将其传递给 net
,因为 net
期望其输入为 std::vector
of Blobs
(原则上,可能有 net
需要多个输入 blob 才能产生输出)。
请注意,您不是将 input_blob
复制到输入向量中,而是将指针传递给它。
我已经 following an example 有人提到我如何将 OpenCV Mat
转换为我可以从中进行预测的 Caffe 对象。据我了解,第一部分缩放图像,然后初始化 caffe class TransformationParameter
:
const float img_to_net_scale = 0.0039215684;
TransformationParameter input_xform_param;
input_xform_param.set_scale( img_to_net_scale );
DataTransformer<float> input_xformer( input_xform_param, TEST );
然后,将OpenCV Mat "patch"转换为"input_blob"。我已经更改了这部分,因为我已经以灰度而不是彩色加载了我的图像。
cv::Mat patch = cv::imread( input_file_str, CV_LOAD_IMAG_GRAYSCALE );
Blob<float> input_blob;
input_blob.Reshape(1, patch.channels(), patch.rows, patch.cols );
input_xformer.Transform( patch, &input_blob );
最后,我不太确定这部分的作用 - 如果我已经将我的 OpenCV Mat 转换为 Caffe blob,为什么我需要推回 "input" 向量并将其传递给互联网?我不能将 input_blob 直接传递到网络中以取回我的预测吗?
std::vector<Blob<float>*> input;
input.push_back( &input_blob );
std::vector<Blob<float>*> output = net->Forward( input );
您需要 push_back
您的 input_blob
才能将其传递给 net
,因为 net
期望其输入为 std::vector
of Blobs
(原则上,可能有 net
需要多个输入 blob 才能产生输出)。
请注意,您不是将 input_blob
复制到输入向量中,而是将指针传递给它。