728x90
영상 불러와서 출력
#include <iostream>#include "opencv2/opencv.hpp"int main()
{
cv::Mat src = cv::imread("../examples/lenna.bmp", cv::IMREAD_GRAYSCALE);
if (src.empty()) {
std::cerr << "Image laod failed!" << std::endl;
return -1;
}
cv::Mat dst = 255 - src;
cv::imwrite("lenna.png", dst);
//cv::nameWindow("src", WINDOW_NORMAL);
cv::imshow("src", src);
cv::imshow("dst", dst);
cv::waitKey()
}
영상 파일 불러오기
cv::Mat = cv::imread(const String& filename, int flags = IMREAD_COLOR); /* filename : 불러올 영상 파일 이름(경로+이름) flags : 영상파일 불러오기 옵션 플래그 - IMREAD_UNCHANGED : 영상 속성 그대로 읽기 e,g: 투명 png -> 4채널(B,G,R,alph) - IMREAD_GRAYSCALE : 1채널 그레이 - IMREAD_COLOR : 3채널 BGR 컬러 return : cv::Mat */
비어있는 Mat 객체 확인
bool = cv::Mat::empty() const /* return : rows, cols, data 멤버 변수가 0이면 true 반환 */
영상파일 저장 저장옵션 flags
bool cv::imwrite ( const String & filename, InputArray img, const std::vector< int > & params = std::vector< int >() ) /* filename : 저장영상 파일 이름, 형식별로 저장됨 알아서 img : 저장 대상 (Mat) params : 저장옵션 - ex ) Params 값 지정 안 해도 괜찮지만 jpg 압축율을 90% : {IMWRITE_JPEG_QUALITY,90} return : 정상저장 true, 실패 false */
새 창 띄우기
void namedwindow(const String& winname, int flags = WINDOW_AUTOSIZE); /* winname : 창 고유 이름, 이 이름으로 창 구분 flags : 창 속성 지정 플래그 - WINDOW_NOMAL : 창 크기를 조절 할 수 있음 - WINDOW_AUTOSIZE : 창의 크기를 조절할 수 없음 - -> 없어도 그냥 imshow를 하게 된다면 autosize로 출력함 */
창닫기
void destroyWindow(const String& winname); void destroyAllWindows(); /* winname : 닫고자하는 창 이름 ** 일반적 프로그램 종료 시 모든 창이 자동으로 닫힘 */
창 위치 지정
void moveWindow(const String& winname, int x, int y);
창 크기 지정
void resizeWindow(const String& winname, int width, int height); // 단 window가 WINDOW_NOMAL 속성으로 생성되어야 동작함
영상출력하기
void imshow(const String& winname, InputArray mat); /* winname : 영상 출력 창 이름 mat : 출력 영상 데이터 Mat 객체 ** 영상출력방식 **** 8-bit unsigned : pixel값 그대로 출력 **** 16-bit unsigned or 32-bit integer : pixel / 255 출력 **** 32-bit or64-bit floating-point : pixel *255 출력 uchar , unsigned char 형태로 내보내는 것이 좋음!!! -> 8bit(1byte)의 형태로 $ 참고사항 만약 winname에 해당하는 창이 없으면 WINDOW_AUTOSIZE 속성의 창을 새로 만들고 영상을 출력 실제로는 waitKey()함수를 호출해야 화면에 영상이 나타남 */
키보드 입력대기
int waitKey(int delay = 0); /* delay : 밀리초 단위 대기 시간, delay <= 0 이면 무한 입력 wait ex ) waitKey(5000); -> 5초 후 넘어감 return : 눌린키값, 키가 눌리지 않으면 -1 ** 참고사항 - waitKey() 함수는 OpenCV 창이 하나라도 있어야 정상작동함 - imshow() 함수 호출 후에 waitKey() 함수를 호출해야 영상이 화면에 나타남 - 주요 특수키 코드 : ESC -> 27 , Enter -> 13 , TAB -> 9 */ // 특정키가 입력되어있을 때 멈추도록 하는 예시 while (true) { if (waitKey() == ' ') //ESC break; }
728x90
'Done > C++_Python' 카테고리의 다른 글
[Ubuntu CMake] VSCode CMake build&debug (C++) (0) | 2023.06.01 |
---|---|
[OpenCV C++] 컬러영상을 그레이스케일 이미지로 변환하는 방법(cvtColor & 연산을 이용한 방법 & sol.) (0) | 2023.06.01 |
[OpenCV C++] 이미지 불러오고 저장하기 (Ubuntu CMakeLists, Command args 연결, Clion) (0) | 2023.06.01 |
[Python] Visualization tool (0) | 2023.01.31 |
[Pytorch] Randomness 고정 cuda (0) | 2022.09.14 |