art

#include "darknet.h"

#include <sys/time.h>

demo_art

void demo_art(char *cfgfile, char *weightfile, int cam_index)
{
#ifdef OPENCV
    network *net = load_network(cfgfile, weightfile, 0);
    set_batch_network(net, 1);

    srand(2222222);

    void * cap = open_video_stream(0, cam_index, 0,0,0);

    char *window = "ArtJudgementBot9000!!!";
    if(!cap) error("Couldn't connect to webcam.\n");
    int i;
    int idx[] = {37, 401, 434};
    int n = sizeof(idx)/sizeof(idx[0]);

    while(1){
        image in = get_image_from_stream(cap);
        image in_s = resize_image(in, net->w, net->h);

        float *p = network_predict(net, in_s.data);

        printf("\033[2J");
        printf("\033[1;1H");

        float score = 0;
        for(i = 0; i < n; ++i){
            float s = p[idx[i]];
            if (s > score) score = s;
        }
        score = score;
        printf("I APPRECIATE THIS ARTWORK: %10.7f%%\n", score*100);
        printf("[");
	int upper = 30;
        for(i = 0; i < upper; ++i){
            printf("%c", ((i+.5) < score*upper) ? 219 : ' ');
        }
        printf("]\n");

        show_image(in, window, 1);
        free_image(in_s);
        free_image(in);
    }
#endif
}

함수 이름: demo_art

입력:

  • cfgfile: YOLO 모델 구성 파일의 경로

  • weightfile: 학습된 가중치 파일의 경로

  • cam_index: 사용할 카메라의 인덱스

동작:

  • 주어진 cfgfile과 weightfile을 사용하여 YOLO 모델을 로드한다.

  • 입력 이미지를 모델의 크기에 맞게 조절한다.

  • 모델을 이용하여 이미지에서 물체를 검출하고 각 물체의 클래스 확률을 계산한다.

  • 계산된 클래스 확률을 이용하여 작품의 평가 점수를 출력하고, 그래프로 나타낸다.

  • 입력 이미지를 화면에 표시한다.

  • 프로그램이 종료될 때까지 위의 과정을 반복한다.

설명:

  • 이 함수는 주어진 cfgfile과 weightfile을 사용하여 YOLO 모델을 로드하고, 이 모델을 사용하여 카메라로부터 입력되는 이미지에서 물체를 검출하고 평가 점수를 계산하는 예제 코드이다.

  • 이 함수는 OpenCV를 사용하여 화면에 이미지를 출력하며, 사용자의 입력이나 다른 이벤트를 처리하지는 않는다.

  • 따라서 이 함수는 YOLO 모델을 사용하여 물체 검출을 수행하는 예제 코드로 사용될 수 있다.

run_art

void run_art(int argc, char **argv)
{
    int cam_index = find_int_arg(argc, argv, "-c", 0);
    char *cfg = argv[2];
    char *weights = argv[3];
    demo_art(cfg, weights, cam_index);
}

함수 이름: run_art

입력:

  • argc와 argv

동작:

  • 주어진 인수들을 기반으로 demo_art 함수를 호출합니다.

설명:

  • 주어진 argc와 argv를 통해 cam_index, cfg, weights를 설정하고 demo_art 함수를 실행합니다.

  • demo_art 함수는 실시간 웹캠 비디오 스트림에서 예술 필터를 적용한 비디오를 생성합니다.

  • cam_index가 주어지면 해당 인덱스의 카메라를 사용하고, 그렇지 않으면 기본 카메라를 사용합니다.

Last updated