개발자 이상현님의 블로그에서 글을 가져왔습니다.
darknet디렉토리 안에 src디렉토리가 있습니다.
이 안에는 여러 source code들이 있었지만 우리가 사용할 source code는image.c입니다.
image.c는 Bounding Box에 관한 좌표와 object에 Bounding Box를 리는 c코드들이 존재합니다.
여기서 code수정을 통해서 Bounding Box의 좌표를 가져옵니다.
image.c 코드를 캡쳐한 이미지입니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
if(bBox == 0) {
if((hf = fopen("/home/j/www/index.html", "r"))) {
int index = 0;
printf("file reset\n");
while((context[index++] = fgetc(hf)) != EOF);
fclose(hf);
if((hf = fopen("/home/j/www/index.html", "w"))) {
fprintf(hf, "%s", context);
fprintf(hf, "\n");
fclose(hf);
}
else
printf("file open fail1\n");
}
else
printf("file open fail1\n");
} |
image.c 코드에서 약 238번째 line에 void draw_detections라는 함수가 보입니다.
이 안에 파일 입출력을 통해서 Bounding Box가 존재하게 되면
html파일이 생성되면서 구축해놓은 서버에 html파일이 올라가게 됩니다.
코드
1
2
3
4
5
6
7
8
9
10
11 |
if(!strcmp(names[class], "fight")) {
bBox = 1;
printf("start \n");
if((hf = fopen("/home/j/www/index.html", "w"))) {
printf("file open success\n");
fprintf(hf, "%d\n", (left+right)/2);
fclose(hf);
}
else
printf("file open fail\n");
} |
이 코드는 약 327 line인데 똑같은 void draw_detections함수 안 입니다.
strcmp를 사용하여, yolo에서 인식되는 폭력의 class name이 fight일 경우에만 index.html을 생성합니다.
그리고 Bounding Box의 left좌표와 right좌표의 가운데 지점 좌표를 구해줍니다.
이렇게 되면 서버의 index.html에는 폭력의 Bounding Box의 정중앙 값이 전송이 됩니다.
아래 이미지를 통해서 확인해 보겠습니다.
인식된 폭력 ounding Box의 가운데 지점을 빨간색으로 표시를 했는데요
중앙의 좌표값이 서버에 잘 전달되는 것을 확인할 수 있습니다.
'IT > YOLO' 카테고리의 다른 글
[9] 아두이노를 활용한 GPS 출력 (2) | 2018.06.25 |
---|---|
[8] 아두이노를 활용한 부저 알람 (3) | 2018.06.25 |
[6] Ubuntu 16.04 APM(Apache2, PHP, Mysql) 설치 (0) | 2018.06.25 |
[5] YOLO 데이터 학습 (51) | 2018.06.16 |
[4] Ubuntu 16.04 YOLO 설치 (13) | 2018.06.16 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!