개발 환경 : ubuntu20.04
소스 코드 : https://github.com/luckydipper/c_cpp_compile_process/tree/main/opencv_cmake_project
목차
0. 그냥 종속성을 고려해서 다운받고 싶으면 아래 커맨드를 입력하면 된다.
sudo apt-get install livopencv-dev
1. 어떻게 다운 받는가?
1.1 필수적으로 다운 받아야 하는 파일
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
1.2 선택적으로 받아야 하는 파일
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
1.3 프로젝트 directory 만들기
git clone https://github.com/opencv/opencv.git
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
cmake command 뒤에 ..도 빠트리면 안 된다.
실행 후 파일 구조
$tree opencv -L 1
opencv
├── 3rdparty
├── CMakeLists.txt
├── CONTRIBUTING.md
├── COPYRIGHT
├── LICENSE
├── README.md
├── SECURITY.md
├── apps
├── build
├── cmake
├── data
├── doc
├── include
├── modules
├── platforms
└── samples
1.4 Build 하기
오래 걸리기 때문에 -j를 줘서 뒤의 숫자 만큼 병렬처리 한다.
cd build
make -j7
build 한다.
sudo make install
1.5 다운로드 완료 확인
/usr/local/include/opencv4/opencv2
에는 opencv들의 header들이 정의되어 있을 것이다.
파일 구조는 아래와 같아 진다.
$tree opencv/build -L 1
opencv/build
├── 3rdparty
├── CMakeCache.txt
├── CMakeDownloadLog.txt
├── CMakeFiles
├── CMakeVars.txt
├── CPackConfig.cmake
├── CPackSourceConfig.cmake
├── CTestTestfile.cmake
├── Makefile
├── OpenCVConfig-version.cmake
├── OpenCVConfig.cmake
├── OpenCVModules.cmake
├── apps
├── bin
├── cmake_install.cmake
├── cmake_uninstall.cmake
├── configured
├── custom_hal.hpp
├── cv_cpu_config.h
├── cvconfig.h
├── data
├── doc
├── include
├── install_manifest.txt
├── lib
├── modules
├── opencv2
├── opencv_data_config.hpp
├── opencv_python_config.cmake
├── opencv_python_tests.cfg
├── opencv_tests_config.hpp
├── python_loader
├── setup_vars.sh
├── test-reports
├── tmp
├── unix-install
└── version_string.tmp
2. 예제
고양이 사진을 흑백으로 만들어 보자.
Before color cat | After gray cat |
2.1 파일 구조
convert_cat/
├── CMakeLists.txt
├── cat.jpg
└── convert_color.cpp
2.2 코드
// convert_color.cpp
#include <opencv2/opencv.hpp>
#include <cstdio>
using namespace cv;
int main( int argc, char** argv)
{
char* imageName = argv[1];
Mat image = imread( imageName, IMREAD_COLOR);
if( argc != 2 || !image.data)
{
printf("No image data\n");
return -1;
}
Mat gray_image;
cvtColor( image, gray_image, COLOR_BGR2GRAY);
imwrite("./gray_cat.jpg", gray_image);
return 0;
}
2.3 CMakeLists
cmake_minimum_required(VERSION 2.8)
project( convert_color )
find_package( OpenCV REQUIRED ) # 환경 변수 들을 찾아서등록
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( convert_color convert_color.cpp )
target_link_libraries( convert_color ${OpenCV_LIBS} )
2.4 Build
cd convert_cat
cmake .
이후 파일 구조
convert_cat/
├── CMakeCache.txt
├── CMakeFiles
│ ├── 3.16.3
│ │ ├── CMakeCCompiler.cmake
│ │ ├── CMakeCXXCompiler.cmake
│ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ ├── CMakeSystem.cmake
│ │ ├── CompilerIdC
│ │ │ ├── CMakeCCompilerId.c
│ │ │ ├── a.out
│ │ │ └── tmp
│ │ └── CompilerIdCXX
│ │ ├── CMakeCXXCompilerId.cpp
│ │ ├── a.out
│ │ └── tmp
│ ├── CMakeDirectoryInformation.cmake
│ ├── CMakeOutput.log
│ ├── CMakeTmp
│ ├── Makefile.cmake
│ ├── Makefile2
│ ├── TargetDirectories.txt
│ ├── cmake.check_cache
│ ├── convert_color.dir
│ │ ├── DependInfo.cmake
│ │ ├── build.make
│ │ ├── cmake_clean.cmake
│ │ ├── depend.make
│ │ ├── flags.make
│ │ ├── link.txt
│ │ └── progress.make
│ └── progress.marks
├── CMakeLists.txt
├── Makefile
├── cat.jpg
├── cmake_install.cmake
├── convert_color.cpp
└── gray_cat.jpg
make로 빌드. convert_cat directory에서
make
-> convert_color 실행 파일이 나옴.
2.5 Execute
./convert_color cat.jpg
-> gray_cat.jpg 생성
출처
https://docs.opencv.org/4.0.0/
https://codingcat.codes/about/
'Engineering > DEV-OPs' 카테고리의 다른 글
MacOS에서 x11프로토콜로 opencv imshow() 확인 하기 (1) | 2024.01.24 |
---|