Как нарисовать ограничивающую рамку вокруг человека
Я начинаю изучать OpenCV для проекта в колледже. Я работал над кодом, который выполняет простое вычитание фона видеофайла с помощью метода разности кадров, что мне удалось, но я хотел нарисовать ограничивающую рамку вокруг человека, движущегося на вычитаемом изображении.
Что я уже пробовал:
#include"opencv2\imgproc.hpp" #include"opencv2\highgui.hpp" #include"opencv2\video.hpp" #include"opencv\cv.h" #include<vector> #include<stdint.h> #include<iostream> using namespace cv; using namespace std; Mat currentframe; Mat prevframe, difframe; vector<vector<point> > contours; vector<vec4i> hierarchy; int area = 0; int idx = 5; Rect rect; int main(int argc, char* argv[]) { //Capture Video VideoCapture cap("1.mp4"); if (!cap.isOpened()) { cerr << "Unable to open file" << endl; return -1; } //namedWindow("Input_Seq", 1); namedWindow("Frame Difference", 1); while (1) { cap >> currentframe; if (currentframe.empty()) break; cvtColor(currentframe, currentframe, CV_BGR2GRAY); cap >> prevframe; if (prevframe.empty()) break; cvtColor(prevframe, prevframe, CV_BGR2GRAY); absdiff(currentframe, prevframe, difframe); //GaussianBlur(difframe, difframe, Size(3, 3), 0, 1, BORDER_DEFAULT); Canny(difframe, difframe, 30, 100, 3); findContours(difframe, contours, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)); imshow("Input_Seq", currentframe); imshow("Frame Difference", difframe); char c = (char)waitKey(25); if (c == 27) break; } cap.release(); destroyAllWindows(); return 0; }