OpenCV 주요 함수
Table of contents
창 관련 함수
namedWindow (새로운 창을 생성)
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
//! Flags for cv::namedWindow
enum WindowFlags {
WINDOW_NORMAL = 0x00000000,
//!< the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size.
WINDOW_AUTOSIZE = 0x00000001,
//!< the user cannot resize the window, the size is constrainted by the image displayed.
WINDOW_OPENGL = 0x00001000,
//!< window with opengl support.
WINDOW_FULLSCREEN = 1,
//!< change the window to fullscreen.
WINDOW_FREERATIO = 0x00000100,
//!< the image expends as much as it can (no ratio constraint).
WINDOW_KEEPRATIO = 0x00000000,
//!< the ratio of the image is respected.
WINDOW_GUI_EXPANDED=0x00000000,
//!< status bar and tool bar
WINDOW_GUI_NORMAL = 0x00000010,
//!< old fashious way
};
moveWindow (창의 위치를 이동)
주어진 이름의 창의 위치를 x, y 좌료로 이동시키는 함수이다.
void moveWindow(const String& winname, int x, int y);
resizeWindow (창의 크기를 조정)
주어진 이름의 창의 크기를 조정하는 함수이다. 창 생성시 WINDOW_NORMAL
속성으로 생성되어야 하며, imshow()
함수보다 나중에 호출 되어야 정상적으로 동작한다.
void resizeWindow(const String& winname, int width, int height);
waitKey (키 입력 대기)
키 입력을 대기하는 함수로 프로그램이 종료되어 창이 닫히는 것을 방지한다. 인자로 정수 형태로 시간을 입력받는다. 이때 정수는 milliseconds 단위이다. 또한 입력받을 키의 코드(ESC=27, ENTER=13, TAB=9)
를 반환한다. 특수 키를 입력받고 싶다면 waitKetEx()
함수를 이용하면 된다. 스페이스바의 경우 공백(‘ ‘)과 비교하면 된다.
int waitKey(int delay = 0);
int waitKeyEx(int delay = 0);
창 종료
주어진 창의 이름을 닫는 함수이다.
void destroyWindow(const String& winname);
열려있는 모든 창을 닫는 함수이다.
void destroyAllWindows();
영상 관련 함수
imread (영상 파일 읽기)
이미지 파일을 Mat 객체로 반환하는 함수이다. flags는 이미지 파일을 불러올 때, 색상 옵션을 설정하는 부분이다. 주로 IMREAD_UNCHANGED
, IMREAD_GRAYSCALE
그리고 IMREAD_COLOR
를 주로 사용한다. 각 옵션은 원본 이미지의 색상 특성을 그대로 반영해서 불러오는 방법이며, 흑백 그리고 색상 모드로 이미지를 불러오는 방법이다.
Mat imread( const String& filename, int flags = IMREAD_COLOR );
//! Imread flags
enum ImreadModes {
IMREAD_UNCHANGED = -1,
//!< If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation.
IMREAD_GRAYSCALE = 0,
//!< If set, always convert image to the single channel grayscale image (codec internal conversion).
IMREAD_COLOR = 1,
//!< If set, always convert image to the 3 channel BGR color image.
IMREAD_ANYDEPTH = 2,
//!< If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.
IMREAD_ANYCOLOR = 4,
//!< If set, the image is read in any possible color format.
IMREAD_LOAD_GDAL = 8,
//!< If set, use the gdal driver for loading the image.
IMREAD_REDUCED_GRAYSCALE_2 = 16,
//!< If set, always convert image to the single channel grayscale image and the image size reduced 1/2.
IMREAD_REDUCED_COLOR_2 = 17,
//!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2.
IMREAD_REDUCED_GRAYSCALE_4 = 32,
//!< If set, always convert image to the single channel grayscale image and the image size reduced 1/4.
IMREAD_REDUCED_COLOR_4 = 33,
//!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4.
IMREAD_REDUCED_GRAYSCALE_8 = 64,
//!< If set, always convert image to the single channel grayscale image and the image size reduced 1/8.
IMREAD_REDUCED_COLOR_8 = 65,
//!< If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8.
IMREAD_IGNORE_ORIENTATION = 128
//!< If set, do not rotate the image according to EXIF's orientation flag.
};
영상 출력
주어진 이름의 창에 영상을 출력한다. 만약 창이 없다면 새로운 창을 만들고 그 위에 이미지를 출력한다. 입력 이미지의 데이터 타입이 InputArray
인 이유는 Mat
형식 외에도 다양한 타입의 데이터를 시각화할 수 있도록 하기 위함이다.
void imshow(const String& winname, InputArray mat);
(imwrite) 영상 파일 저장
InputArray
타입의 변수를 파일로 저장하는 함수이다. 마지막 인자인 params
는 JPG로 저장할 경우, 압축율을 지정할 때 사용되는 인자이다(e.g. {IMWRITE_JEPG_QUARITY, 90} : 압축율을 90%로 지정
). 파일 저장이 정상적으로 이루어지면, true 그렇지 않으면 false를 반환한다.
bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
//! Imwrite flags
enum ImwriteFlags {
IMWRITE_JPEG_QUALITY = 1,
//!< For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95.
IMWRITE_JPEG_PROGRESSIVE = 2,
//!< Enable JPEG features, 0 or 1, default is False.
IMWRITE_JPEG_OPTIMIZE = 3,
//!< Enable JPEG features, 0 or 1, default is False.
IMWRITE_JPEG_RST_INTERVAL = 4,
//!< JPEG restart interval, 0 - 65535, default is 0 - no restart.
IMWRITE_JPEG_LUMA_QUALITY = 5,
//!< Separate luma quality level, 0 - 100, default is -1 - don't use.
IMWRITE_JPEG_CHROMA_QUALITY = 6,
//!< Separate chroma quality level, 0 - 100, default is -1 - don't use.
IMWRITE_JPEG_SAMPLING_FACTOR = 7,
//!< For JPEG, set sampling factor. See cv::ImwriteJPEGSamplingFactorParams.
IMWRITE_PNG_COMPRESSION = 16,
//!< For PNG, it can be the compression level from 0 to 9. A higher value means a smaller size and longer compression time. If specified, strategy is changed to IMWRITE_PNG_STRATEGY_DEFAULT (Z_DEFAULT_STRATEGY). Default value is 1 (best speed setting).
IMWRITE_PNG_STRATEGY = 17,
//!< One of cv::ImwritePNGFlags, default is IMWRITE_PNG_STRATEGY_RLE.
IMWRITE_PNG_BILEVEL = 18,
//!< Binary level PNG, 0 or 1, default is 0.
IMWRITE_PXM_BINARY = 32,
//!< For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1.
IMWRITE_EXR_TYPE = (3 << 4) + 0, /* 48 */
//!< override EXR storage type (FLOAT (FP32) is default)
IMWRITE_EXR_COMPRESSION = (3 << 4) + 1, /* 49 */
//!< override EXR compression type (ZIP_COMPRESSION = 3 is default)
IMWRITE_EXR_DWA_COMPRESSION_LEVEL = (3 << 4) + 2, /* 50 */
//!< override EXR DWA compression level (45 is default)
IMWRITE_WEBP_QUALITY = 64,
//!< For WEBP, it can be a quality from 1 to 100 (the higher is the better). By default (without any parameter) and for quality above 100 the lossless compression is used.
IMWRITE_HDR_COMPRESSION = (5 << 4) + 0, /* 80 */
//!< specify HDR compression
IMWRITE_PAM_TUPLETYPE = 128,
//!< For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format
IMWRITE_TIFF_RESUNIT = 256,
//!< For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values
IMWRITE_TIFF_XDPI = 257,
//!< For TIFF, use to specify the X direction DPI
IMWRITE_TIFF_YDPI = 258,
//!< For TIFF, use to specify the Y direction DPI
IMWRITE_TIFF_COMPRESSION = 259,
//!< For TIFF, use to specify the image compression scheme. See libtiff for integer constants corresponding to compression formats. Note, for images whose depth is CV_32F, only libtiff's SGILOG compression scheme is used. For other supported depths, the compression scheme can be specified by this flag; LZW compression is the default.
IMWRITE_JPEG2000_COMPRESSION_X1000 = 272
//!< For JPEG2000, use to specify the target compression rate (multiplied by 1000). The value can be from 0 to 1000. Default is 1000.
};
예외처리 관련 함수
Assert는 인자로 주어진 조건이 true
가 아닌 경우에 프로그램을 종료하는 매크로 함수이다.
#define CV_Assert( expr ) do { if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ ); } while(0)