python.을 활용하여 개발을 진행하던 중 Edge device를 사용하면서 문제가 발생했다
속도가 너무 느리고 메모리가 부족하다는 점이였다.
그래서 C++을 활용하여 개발을 진행하고자 이전에 python으로 진행했던 opencv 예제를 C++로 변환하여 다시 진행하려한다.
(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에 정의되어있다
'Machine Learning > Computer Vision' 카테고리의 다른 글
(12) Opencv Python - 자동차 번호판에 대하여 (0) | 2023.09.14 |
---|---|
(2) OpenCV C++ - image 결합, 외곽선 검출 (0) | 2023.09.13 |
(11) OpenCV python - 원근(투영) 변환 - perspective (projection) transform (0) | 2022.06.07 |
(에러를 딛고 깨달은) opencv perspective transform 후 선 그린 후 원본에서 해당 선의 위치 구하기 - 역변환 하기, 점 변환 (0) | 2022.03.10 |
(10) OpenCV python - 색상 범위 추출 - inRange (0) | 2021.11.27 |