【OpenCV dnn模块】笔记

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;

返回具有未连接输出的层的索引

你可能感兴趣的:(yolov3,yolov4,深度学习)