Get the App
SLTechnology News&Howtos  ›  Development  › 

How to deploy yolov5 with Qt and OpenCV

Shulou Source: shulou.com Published: 2022-06-01 00:12:46 10月01日 Update

< 3; n++) ///尺度 { int num_grid_x = (int)(this->

InpWidth / this- > stride [n]; int num_grid_y = (int) (this- > inpHeight / this- > stride [n]); int area = num_grid_x * num_grid_y; this- > sigmoid (& outs [n], 3 * nout * area); for (Q = 0; Q

< 3; q++) ///anchor数 { const float anchor_w = this->

Anchors [n] [Q * 2]; const float anchor_h = this- > anchors [n] [Q * 2 + 1]; float* pdata = (float*) outlets [n] .data + Q * nout * area; for (I = 0; I

< num_grid_y; i++) { for (j = 0; j < num_grid_x; j++) { float box_score = pdata[4 * area + i * num_grid_x + j]; if (box_score >

This- > objThreshold) {float max_class_socre = 0, class_socre = 0; int max_class_id = 0; for (c = 0; c

< 80; c++) get max socre { class_socre = pdata[(c + 5) * area + i * num_grid_x + j]; if (class_socre >

Max_class_socre) {max_class_socre = class_socre; max_class_id = c }} if (max_class_socre > this- > confThreshold) {float cx = (pdata [I * num_grid_x + j] * 2.f-0.5f + j) * this- > stride [n] / cx float cy = (pdata [area + I * num_grid_x + j] * 2.f-0.5f + I) * this- > stride [n]; / / cy float w = powf (pdata [2 * area + I * num_grid_x + j] * 2.f, 2.f) * anchor_w / w float h = powf (pdata [3 * area + I * num_grid_x + j] * 2.f, 2.f) * anchor_h; / h int left = (cx-0.5000w) * ratiow; int top = (cy-0.5shouh) * ratioh / / restore the coordinates to the original image classIds.push_back (max_class_id); confidences.push_back (max_class_socre); boxes.push_back (Rect (left, top, (int) (w*ratiow), (int) (h*ratioh) }} / / Perform non maximum suppression to eliminate redundant overlapping boxes with / / lower confidences vector indices; cv::dnn::NMSBoxes (boxes, confidences, this- > confThreshold, this- > nmsThreshold, indices); for (size_t I = 0; I

< indices.size(); ++i) { int idx = indices[i]; Rect box = boxes[idx]; this->

DrawPred (classIds [idx], confidences [idx], box.x, box.y, box.x + box.width, box.y + box.height, frame);} void YOLOV5::drawPred (int classId, float conf, int left, int top, int right, int bottom, Mat & frame) {rectangle (frame, Point (left, top), Point (right, bottom), Scalar (0,0,255), 3); string label = format ("% .2f", conf) Label = this- > classes [classId] + ":" + label; int baseLine; Size labelSize = getTextSize (label, FONT_HERSHEY_SIMPLEX, 0.5,1, & baseLine); top = max (top, labelSize.height); putText (frame, label, Point (left, top), FONT_HERSHEY_SIMPLEX, 0.75, Scalar (0,255,0), 1);} void YOLOV5::sigmoid (Mat * out, int length) {float* pdata = (float*) (out- > data) Int I = 0; for (I = 0; I

< length; i++) { pdata[i] = 1.0 / (1 + expf(-pdata[i])); }}三、效果演示

At this point, I believe you have a deeper understanding of "how to deploy yolov5 with Qt and OpenCV". You might as well do it in practice. Here is the website, more related content can enter the relevant channels to inquire, follow us, continue to learn!

Tags: Model detection content category learning practical deeper code interest function original image image coordinate practicality practical simple operation effect file method more Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno vpn Shulou Tech Info Huawei Shulou Information Xiaomi