转换OpenCV灰度垫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"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_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
期望其输入为Blobs
的 std::vector
(原则上,可能有net
需要多个单一输入blob来产生输出)。
注意,您不是将input_blob
复制到输入向量中,而是传递一个指向它的指针。
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- WinVerifyTrust 仅在使用文件而不是内存 blob 时才有效
- CAFFE转发网络在for循环中不起作用
- protobuf C++ SQLite handle blob data
- 将图像魔术 blob 保存到节点缓冲区
- 给一个图 G 找到此图中的所有节点 blob,以便 node.color 属性 = 特定颜色
- 使用Caffe和CUDA的C++程序
- MySQL c++ 连接器:使用 SetBlob() 在查询中设置多个 blob 数据的正确方法是什么?
- 当我调用它来解码 Blob 对象中的 png 图像时,"Magick++::readImages"引发警告
- Tensorflow C++ API 和 Caffe 兼容性问题与 Glog 相关
- Magick++没有加载TGA blob
- Caffe LSTM 层不起作用
- caffe 可以一次接收一批具有不同分辨率的输入吗?如果是这样,怎么办?
- 错误:使用 tesseract 引擎时 C++ 中的声明'typedef struct tagBLOB BLOB'冲突
- Caffe 或 Caffe2 可以直接从 GPU 获得输入数据吗?
- Magick++ Blob to Image Error
- 密钥错误: "Couldn't find enum caffe.EmitConstraint.EmitType"
- Caffe在net_.reset上打印整个protext文件(new Net<float>(model_file,TEST))
- 无法使用 OpenCV 读取网络从咖啡加载数字训练的 Caffe 模型
- 转换OpenCV灰度垫Caffe blob