opencv dnn模块学习记录
1.cv::dnn::readNetFromDarknet(const String &cfgFile, const String &darknetModel = String());
第一个参数是cfg配置文件,描述网络结构,例如yolov3.cfg
第二个参数是训练出来的模型文件,后缀是.weights
返回值类型为cv::dnn::Net,用于初始定义生成网络。
2.CV_WRAP void setPreferableBackend(int backendId);
要求网络使用它所支持的特定计算后端。
例如
net.setPreferableBackend(dnn::DNN_BACKEND_OPENCV);
3. CV_WRAP void setPreferableTarget(int targetId);
要求网络对特定的目标设备进行计算。
例如
net.setPreferableTarget(dnn::DNN_TARGET_CPU);//指定推理过程采用cpu进行运算
4. CV_EXPORTS void blobFromImage(InputArray image, OutputArray blob, double scalefactor=1.0,const Size& size = Size(), const Scalar& mean = Scalar(),bool swapRB=false, bool crop=false, int ddepth=CV_32F);
对图像进行预处理,先减去均值,然后进行缩放。
详细内容可以参考
https://blog.csdn.net/u011341856/article/details/100041050
examples:
cv::Mat blob;
cv::Mat frame = cv::imread(image_path);
cv::dnn::blobFromImage(frame, blob, 1 / 255.0, cv::Size(mInpWidth, mInpHeight), Scalar(0, 0, 0), true, false);
5.CV_WRAP void setInput(InputArray blob, const String& name = "",
double scalefactor = 1.0, const Scalar& mean = Scalar());
为网络设置新的输入值
输入的矩阵必须是CV_32F,或者CV_8U
6.CV_WRAP void forward(OutputArrayOfArrays outputBlobs,
const std::vector<String>& outBlobNames);
运行前向传递来计算outBlobNames中列出的层的输出
example:
vector<Mat> outs;
net.forward(outs, getOutputsNames(net));
outs包含指定层的第一个输出的blob
7.CV_WRAP std::vector<int> getUnconnectedOutLayers() const;
返回具有未连接输出的层的索引