头文件
#include#include using namespace std; using namespace cv; struct bbox_t { unsigned int x, y, w, h; // (x,y) - top-left corner, (w, h) - width & height of bounded box float prob; // confidence - probability that the object was found correctly unsigned int obj_id; // class of object - from range [0, classes-1] unsigned int track_id; // tracking id for video (0 - untracked, 1 - inf - tracked object) unsigned int frames_counter; // counter of frames on which the object was detected float x_3d, y_3d, z_3d; // center of object (in Meters) if ZED 3D Camera is used };
主程序
#include "my.h" void ImgBlock(Mat& src, int sub, vector& subImages, vector & location) { int height = src.rows; int width = src.cols; int stride = int(sub * 0.9); // 374 for (int i = 0; i < height; i+=stride) { for (int j = 0; j < width; j+=stride) { Rect sub_rect; sub_rect.x = j + 416 < width ? j : width - 416 ; sub_rect.y = i + 416 < height ? i : height - 416; sub_rect.width = 416;//j + 416 < width ? 416 : width - j; sub_rect.height = 416;//i + 416 < height ? 416 : height - i; Mat sub_img = src(sub_rect); string sub_name = to_string(i) + "_" + to_string(j) + ".jpg"; // ���±걣�� imwrite(sub_name, sub_img); subImages.push_back(sub_img); location.push_back(sub_rect); } } } void ImgStitch(vector subImages, vector locations, Mat res) { vector result; for (int i = 0; i < subImages.size(); i++) { Mat subImg = subImages[i]; subImg =5*subImg; Rect2i loc = locations[i]; vector yolo_box; for (int k = 0; k < yolo_box.size(); k++) { bbox_t n_box; n_box.x = yolo_box[i].x + loc.x; n_box.y = yolo_box[i].y + loc.y; n_box.obj_id = yolo_box[i].obj_id; n_box.prob = yolo_box[i].prob; result.push_back(n_box); } // yolo��� Mat ROI = res(loc); subImg.copyTo(res(loc)); } } int main() { Mat img = imread("1.jpg"); int height = img.rows; int width = img.cols; imshow("1", img); int sub = 416; vector subImages; vector locations; ImgBlock(img, sub, subImages, locations); Mat res = Mat::zeros(Size(width, height), img.type()); ImgStitch(subImages, locations, res); imshow("2", res); waitKey(0); system("pause"); return 0; }



