본문 바로가기

OpenCV

ch13 hog

#python

import cv2
import numpy as np

def main():
    cap = cv2.VideoCapture("D:\\projects\\SampleCode\\006939-master\\ch13\\hog\\vtest.avi")

    if not cap.isOpened():
        print("Video open failed!")
        return -1

    hog = cv2.HOGDescriptor()
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

    while True:
        ret, frame = cap.read()
        if not ret:
            break

        detected, _ = hog.detectMultiScale(frame)
        for x in detected:
            color = np.random.randint(0, 256, 3)
            cv2.rectangle(frame, x.tolist(), color.tolist(), 3)

        cv2.imshow("frame", frame)

        if cv2.waitKey(10) == 27:
            break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

// C++

#include "opencv2/opencv.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
	VideoCapture cap("vtest.avi");

	if (!cap.isOpened()) {
		cerr << "Video open failed!" << endl;
		return -1;
	}

	HOGDescriptor hog;
	hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

	Mat frame;
	while (true) {
		cap >> frame;
		if (frame.empty()) 
			break;

		vector<Rect> detected;
		hog.detectMultiScale(frame, detected);

		for (Rect r : detected) {
			Scalar c = Scalar(rand() % 256, rand() % 256, rand() % 256);
			rectangle(frame, r, c, 3);
		}

		imshow("frame", frame);

		if (waitKey(10) == 27)
			break;
	}

	return 0;
}

C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저


'OpenCV' 카테고리의 다른 글

ch13 template  (0) 2024.05.21
ch13 QRCode  (0) 2024.05.21
ch13 cascade  (0) 2024.05.21
ch12 polygon  (0) 2024.05.21
ch12 labeling  (0) 2024.05.21