image_opencv

image_to_ipl

#ifdef OPENCV

using namespace cv;

extern "C" {

IplImage *image_to_ipl(image im)
{
    int x,y,c;
    IplImage *disp = cvCreateImage(cvSize(im.w,im.h), IPL_DEPTH_8U, im.c);
    int step = disp->widthStep;
    for(y = 0; y < im.h; ++y){
        for(x = 0; x < im.w; ++x){
            for(c= 0; c < im.c; ++c){
                float val = im.data[c*im.h*im.w + y*im.w + x];
                disp->imageData[y*step + x*im.c + c] = (unsigned char)(val*255);
            }
        }
    }
    return disp;
}

ํ•จ์ˆ˜ ์ด๋ฆ„: image_to_ipl

์ž…๋ ฅ:

  • image im (์ด๋ฏธ์ง€ ๊ตฌ์กฐ์ฒด)

๋™์ž‘:

  • ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ ์ด๋ฏธ์ง€ ๊ตฌ์กฐ์ฒด๋ฅผ OpenCV์˜ IplImage ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ๋Š” ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๋ฐ ์ฑ„๋„์— ๋งž๊ฒŒ IplImage ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, ์ž…๋ ฅ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ 0~255 ๋ฒ”์œ„๋กœ ์Šค์ผ€์ผ๋งํ•˜์—ฌ IplImage์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…:

  • YOLO๊ฐ™์€ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์—์„œ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ ํ”„๋ ˆ์ž„๋งˆ๋‹ค OpenCV์˜ IplImage ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • IplImage ๊ตฌ์กฐ์ฒด๋Š” OpenCV์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ฒด๋กœ, ์ฑ„๋„, ํฌ๊ธฐ, ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋“ฑ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ํ•จ์ˆ˜์—์„œ๋Š” ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ ์ด๋ฏธ์ง€ ๊ตฌ์กฐ์ฒด๋ฅผ IplImage ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ipl_to_image

ํ•จ์ˆ˜ ์ด๋ฆ„: ipl_to_image

์ž…๋ ฅ:

  • IplImage* src (IplImage ํฌ์ธํ„ฐ)

๋™์ž‘:

  • OpenCV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ IplImage ํฌ๋งท์œผ๋กœ ์ €์žฅ๋œ ์ด๋ฏธ์ง€๋ฅผ Darknet์˜ image ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ์ฃผ์–ด์ง„ IplImage ํฌ์ธํ„ฐ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€์˜ ๋†’์ด, ๋„ˆ๋น„, ์ฑ„๋„ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด image๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ IplImage์˜ imageData ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ƒˆ๋กœ ๋งŒ๋“  image์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ์— ํ• ๋‹นํ•œ๋‹ค.

์„ค๋ช…:

  • OpenCV์˜ IplImage ํฌ๋งท์œผ๋กœ ์ €์žฅ๋œ ์ด๋ฏธ์ง€๋ฅผ Darknet์˜ image ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

  • ์ฃผ์–ด์ง„ IplImage ํฌ์ธํ„ฐ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€์˜ ๋†’์ด, ๋„ˆ๋น„, ์ฑ„๋„ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

  • ๊ฐ€์ ธ์˜จ ๋†’์ด, ๋„ˆ๋น„, ์ฑ„๋„ ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ make_image ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด image๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ์ดํ›„, IplImage์˜ imageData ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ƒˆ๋กœ ๋งŒ๋“  image์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ์— ํ• ๋‹นํ•œ๋‹ค.

  • ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์˜ ํ”ฝ์…€ ๊ฐ’ ๋ฒ”์œ„๊ฐ€ 0255์ด๋ฏ€๋กœ, 255๋กœ ๋‚˜๋ˆ„์–ด์„œ 01 ๋ฒ”์œ„๋กœ ์ •๊ทœํ™”ํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’: ๋ณ€ํ™˜๋œ image ๊ตฌ์กฐ์ฒด

image_to_mat

ํ•จ์ˆ˜ ์ด๋ฆ„: image_to_mat

์ž…๋ ฅ:

  • image im (์ž…๋ ฅ ์ด๋ฏธ์ง€)

๋™์ž‘:

  • ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ OpenCV์˜ Mat ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๋จผ์ € ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์ œ์•ฝ ์กฐ๊ฑด์„ ์ ์šฉํ•œ ํ›„, ์ž…๋ ฅ ์ด๋ฏธ์ง€๊ฐ€ 3์ฑ„๋„(RGB)์ธ ๊ฒฝ์šฐ rgbgr ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ ํ›„, ๋ณ€ํ™˜๋œ ์ด๋ฏธ์ง€๋ฅผ IplImage ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  cvarrToMat ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mat ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ IplImage ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๊ณ  ์ด๋ฏธ์ง€ ๋ณต์‚ฌ๋ณธ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…:

  • copy_image(im): ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • constrain_image(copy): ์ด๋ฏธ์ง€๋ฅผ 0~1 ๊ฐ’์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

  • rgbgr_image(copy): ์ด๋ฏธ์ง€ ์ƒ‰์ƒ ์ฑ„๋„์„ RGB์—์„œ BGR ์ˆœ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • image_to_ipl(copy): ์ด๋ฏธ์ง€๋ฅผ IplImage ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • cvarrToMat(ipl, true): IplImage๋ฅผ Mat ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • cvReleaseImage(&ipl): IplImage ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

  • free_image(copy): ์ด๋ฏธ์ง€ ๋ณต์‚ฌ๋ณธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

mat_to_image

ํ•จ์ˆ˜ ์ด๋ฆ„: mat_to_image

์ž…๋ ฅ:

  • Mat m (OpenCV์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ์ง€ ํฌ๋งท Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€)

๋™์ž‘:

  • OpenCV์˜ Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ Darknet์˜ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • ๋จผ์ €, Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ IplImage ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ipl_to_image ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Darknet์˜ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์ดํ›„, rgbgr_image ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ์ƒ‰์ƒ์„ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…:

  • ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ Darknet์˜ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

open_video_stream

ํ•จ์ˆ˜ ์ด๋ฆ„: open_video_stream

์ž…๋ ฅ:

  • const char *f: ๋น„๋””์˜ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ (๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •)

  • int c: ๋น„๋””์˜ค ์บก์ฒ˜ ์žฅ์น˜์˜ ์ธ๋ฑ์Šค (๋น„๋””์˜ค ํŒŒ์ผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ 0์œผ๋กœ ์„ค์ •)

  • int w: ๋น„๋””์˜ค ํ”„๋ ˆ์ž„์˜ ๋„ˆ๋น„ (์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 0)

  • int h: ๋น„๋””์˜ค ํ”„๋ ˆ์ž„์˜ ๋†’์ด (์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 0)

  • int fps: ๋น„๋””์˜ค์˜ ์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜ (์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 0)

๋™์ž‘:

  • ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋น„๋””์˜ค ํŒŒ์ผ ๋˜๋Š” ์บก์ฒ˜ ์žฅ์น˜์—์„œ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์—ด๊ณ , ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์บก์ฒ˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” VideoCapture ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

  • VideoCapture ๊ฐ์ฒด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์—ด๋ฆฌ์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋„ˆ๋น„, ๋†’์ด ๋ฐ FPS ๊ฐ’์ด ์„ค์ •๋˜์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น ๊ฐ’์„ VideoCapture ๊ฐ์ฒด์— ์„ค์ •ํ•œ๋‹ค.

  • VideoCapture ๊ฐ์ฒด์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์„ค๋ช…:

  • ์ž…๋ ฅ๋œ ๋น„๋””์˜ค ํŒŒ์ผ ๊ฒฝ๋กœ๋‚˜ ์นด๋ฉ”๋ผ ์žฅ์น˜ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์—ด๊ณ , ํ”„๋ ˆ์ž„์˜ ๋„ˆ๋น„, ๋†’์ด, ์†๋„๋ฅผ ์„ค์ •ํ•œ๋‹ค.

  • ์ด๋•Œ, ํ”„๋ ˆ์ž„ ๋„ˆ๋น„์™€ ๋†’์ด, ์†๋„๊ฐ€ 0์ด๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค. ๋ฐ˜ํ™˜๋˜๋Š” VideoCapture ๊ฐ์ฒด๋Š” ์ดํ›„ ๋น„๋””์˜ค ํ”„๋ ˆ์ž„์„ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

get_image_from_stream

ํ•จ์ˆ˜ ์ด๋ฆ„: get_image_from_stream

์ž…๋ ฅ:

  • void ํฌ์ธํ„ฐ p (์˜์ƒ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด)

๋™์ž‘:

  • ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ์˜์ƒ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด์—์„œ ํ˜„์žฌ ํ”„๋ ˆ์ž„์„ ์ฝ์–ด์™€ OpenCV์˜ Mat ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ Darknet์˜ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋งŒ์•ฝ ํ˜„์žฌ ํ”„๋ ˆ์ž„์ด ์—†๋Š” ๊ฒฝ์šฐ, ํฌ๊ธฐ๊ฐ€ 0์ธ ๋นˆ image๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์„ค๋ช…:

  • VideoCapture: OpenCV์—์„œ ์˜์ƒ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค

  • Mat: OpenCV์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค

  • make_empty_image(w,h,c): Darknet์—์„œ ๋นˆ image๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜ (๋„ˆ๋น„ w, ๋†’์ด h, ์ฑ„๋„ ์ˆ˜ c)

  • mat_to_image(m): OpenCV์˜ Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ Darknet์˜ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

load_image_cv

ํ•จ์ˆ˜ ์ด๋ฆ„: load_image_cv

์ž…๋ ฅ:

  • filename (char *) : ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ด๋ฆ„

  • channels (int) : ์ฑ„๋„ ์ˆ˜ (0, 1, 3 ์ค‘ ํ•˜๋‚˜)

๋™์ž‘:

  • OpenCV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ , ์ฑ„๋„ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ.

  • ์ด๋ฏธ์ง€๋ฅผ Mat ํ˜•์‹์œผ๋กœ ์ฝ์€ ๋‹ค์Œ, mat_to_image() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ.

์„ค๋ช…:

  • OpenCV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ฝ์–ด์˜ด

  • channels ๊ฐ’์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ grayscale ๋˜๋Š” color ์ด๋ฏธ์ง€๋กœ ์ฝ์–ด์˜ด (channels=0์ธ ๊ฒฝ์šฐ grayscale, channels=1์ธ ๊ฒฝ์šฐ color, channels=3์ธ ๊ฒฝ์šฐ RGB ์ด๋ฏธ์ง€๋ฅผ ์ฝ์–ด์˜ด)

  • ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์—†์„ ๊ฒฝ์šฐ, ์ฝ˜์†”์— ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ํฌ๊ธฐ๊ฐ€ 10x10์ด๊ณ  ์ฑ„๋„ ์ˆ˜๊ฐ€ 3์ธ ๋นˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ.

  • mat_to_image() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mat ํ˜•์‹์˜ ์ด๋ฏธ์ง€๋ฅผ image ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ.

show_image_cv

ํ•จ์ˆ˜ ์ด๋ฆ„: show_image_cv

์ž…๋ ฅ:

  • image im (ํ‘œ์‹œํ•  ์ด๋ฏธ์ง€)

  • const char* name (์œˆ๋„์šฐ ์ฐฝ ์ด๋ฆ„)

  • int ms (์œˆ๋„์šฐ๊ฐ€ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์‹œ๊ฐ„)

๋™์ž‘:

  • ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ OpenCV Mat ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์œˆ๋„์šฐ ์ฐฝ์— ํ‘œ์‹œํ•œ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ์œˆ๋„์šฐ๊ฐ€ ์—ด๋ฆฐ ์ƒํƒœ๋กœ ms (์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ์‹œ๊ฐ„) ๋ฐ€๋ฆฌ์ดˆ๋งŒํผ ๋Œ€๊ธฐํ•œ ํ›„, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ์ž…๋ ฅ์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์„ค๋ช…:

  • Darknet์—์„œ ํ‘œ์‹œํ•  ์ด๋ฏธ์ง€๋ฅผ OpenCV์˜ imshow ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œˆ๋„์šฐ ์ฐฝ์— ํ‘œ์‹œํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

  • ์ด๋ฏธ์ง€๋ฅผ OpenCV์˜ Mat ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ imshow ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๊ณ , ์ž…๋ ฅ๋œ ์‹œ๊ฐ„(ms)๋งŒํผ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ์ž…๋ ฅ์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋ฐ˜ํ™˜๋œ ๊ฐ’์ด -1์ด๋ฉด ์•„๋ฌด ์ž…๋ ฅ๋„ ์—†์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

make_window

ํ•จ์ˆ˜ ์ด๋ฆ„: make_window

์ž…๋ ฅ:

  • name (char*): ์ฐฝ์˜ ์ด๋ฆ„

  • w(int): ์ฐฝ์˜ ๋„ˆ๋น„

  • h(int): ์ฐฝ์˜ ๋†’์ด

  • fullscreen(int): ์ „์ฒดํ™”๋ฉด ์—ฌ๋ถ€(0 ๋˜๋Š” 1)

๋™์ž‘:

  • OpenCV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ namedWindow() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์ด name์ธ ์ฐฝ์„ ์ƒ์„ฑํ•œ๋‹ค.

  • fullscreen์ด 1์ธ ๊ฒฝ์šฐ ์ฐฝ์„ ์ „์ฒดํ™”๋ฉด์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ , 0์ธ ๊ฒฝ์šฐ ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ w x h๋กœ ์กฐ์ •ํ•œ๋‹ค.

  • Demo๋ผ๋Š” ์ด๋ฆ„์˜ ์ฐฝ์ธ ๊ฒฝ์šฐ, (0,0) ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

์„ค๋ช…:

  • OpenCV๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝ์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

  • ์ฐฝ์˜ ์ด๋ฆ„๊ณผ ํฌ๊ธฐ, ์ „์ฒดํ™”๋ฉด ์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ณ , namedWindow()๊ณผ setWindowProperty() ๋˜๋Š” resizeWindow()์™€ moveWindow() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐฝ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

Last updated

Was this helpful?