python.을 활용하여 개발을 진행하던 중 Edge device를 사용하면서 문제가 발생했다 

속도가 너무 느리고 메모리가 부족하다는 점이였다. 

그래서 C++을 활용하여 개발을 진행하고자 이전에 python으로 진행했던 opencv 예제를 C++로 변환하여 다시 진행하려한다. 

2021.06.23 - [Machine Learning/Computer Vision] - (1) OpenCV python - 기초 ( imread, imshow, imwrite, cvtColor, resize, waitkey, destroyAllWindows)

 

(1) OpenCV python - 기초 ( imread, imshow, imwrite, cvtColor, resize, waitkey, destroyAllWindows)

CNN 모델에 학습을 시키기 전 하고자 하는 목표에 맞게 이미지를 전처리하여 학습을 시키면 더 좋은 효과를 볼 수 있다. 이미지에서 필요없는 부분이 있는지, 특정 영역만을 추출해도 되는지 개

house-of-e.tistory.com

 

 

1. cv::imread 

string img_path = "asd";
Mat img = imread(img_path, IMREAD_COLOR);
  • 지정된 경로에 이미지를 읽어오는 함수이다 
  • 파라미터 - (const cv::String &filename, int flags =1 ) 
  • 첫번째 파라미터는 파일 이름으로 String형태의 문자열을 입력받는다 
  • 두번째 파라미터는 load할 color의 종류로 cv:: 에 여러가지 종류의 color type이 enum으로 정의되어있다
  • enum  ImreadModes {
    IMREAD_UNCHANGED=-1, 
    IMREAD_GRAYSCALE = 0, 
    IMREAD_COLOR = 1 // 기본값 
    ....
    }

2. cv::imshow

imshow("window_name", img);
  • 설정한 Window name을 가지는 창을 띄운다 
  • 파라미터 - (const cv::String &winname, cv::InputArray mat) 
  • 첫번째 파라미터는 생성할 윈도우의 이름으로 String형태로 문자열을 입력받는다 
  • 두번째 파라미터는 윈도우에 표시할 이미지 데이터로cv::InputArray형태로 입력받는다 

3. cv::waitKey

waitKey(0)
  • 사용자의 키 입력을 설정한 시간만큼 대기한다. 만약 0이면 무한대로 대기한다 
  • 파라미터 - (int delay=0) 
  • 첫번째 파라미터는 대기할 시간을 의미한다 단위는 milliseconds 이다 

4. cv::cvtColor : header -> (opencv2/opencv.hpp)

Mat grayImage;
cvtColor(img, grayImage, COLOR_BGR2GRAY);
Mat HSVImage; 
cvtColor(img, grayImage, COLOR_BGR2HSV);

  • 파라미터 - (cv::InputArray src, cv::OutputArray dst, int code, int dstCn = 0 ) 
  • 첫번째 파라미터는 변경을 하려는 이미지 
  • 두번째 파라미터는 변경한 결과를 저장할 변수 
  • 세번째 파라미터는  변경을 할 색상이다. enum으로 cv::ColorConversionCodes에 작성되어있다 
  • 네번째 파라미터는 결과물의 차원 수이다. 기본값은 0으로 0일시 원본이미지와 코드에서 자동적으로 차원이결정된다  

5. cv::resize 

Mat resizedImg; 
resize(img, resizedImg, Size(640, 640));
  • 파라미터 - (cv::InputArray src, cv::OutputArray dst, cv::Size dsize, double fx =(0.0), double fy = (0.0), int interpolation = 1 ) 
  • 세번째 파라미터는 변경하고자 하는 크기이다. cv::Size형태로 전달해야한다 
  • 네번째 파라미터는 수평(x축)에 적용되는 배율의 값이다 
  • 다섯번째 파라미터는 수직(y축)에 적용되는 배율의 값이다
  • 여섯번째 파라미터는 사용할 보간법의 종류를 설정할 수 있다. enum으로 InterpolationFlags에 정의되어있다

 

+ Recent posts