簡體   English   中英

將OpenCV灰度Mat轉換為Caffe Blob

[英]Converting OpenCV grayscale Mat to Caffe blob

我一直在遵循一個示例,該示例涉及如何將OpenCV Mat轉換為可以從中進行預測的Caffe對象。 據我了解,第一部分縮放圖像,然后初始化caffe類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“補丁”轉換為“ 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_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希望將其輸入作為Blobsstd::vector (原則上, net可能需要多個輸入Blob才能產生輸出)。
請注意,您不是將input_blob復制到輸入向量中,而是將指針傳遞給它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM