CMake 로 OpenCV 프로젝트 구축 프로 세 스 분석
전체 항목 을 더욱 조리 있 게 하기 위해 서 우리 의 폴 더 는 다음 과 같은 조직 방식 을 사용 합 니 다.
bin
build
CMakeLists.txt
src
그 중에서 빈 디 렉 터 리 는 컴 파일 로 생 성 된 실행 가능 한 파일 을 놓 는 데 사 용 됩 니 다.build 디 렉 터 리 는 cmake 구축 프로젝트 에 사 용 됩 니 다.src 는 소스 코드 를 놓 는 데 사 용 됩 니 다.
OpenCV 원본 파일
다음은 우리 가 쓴 OpenCV 예제 코드 입 니 다.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << "Usage: opencv_test <image path>" << endl;
return -1;
}
char *imgName = argv[1];
Mat image;
image = imread(imgName, 1);
if (!image.data)
{
cout << "No image data" << endl;
return -1;
}
Mat gray_img;
cvtColor(image, gray_img, CV_BGR2GRAY);
imwrite("images/result.jpg", gray_img);
return 0;
}
그림 을 읽 고 그 레이스 케 일 로 전환 하 는 간단 한 예 입 니 다. CMake 파일 작성
CMake 파일 의 파일 이름 CMakeLists.txt 는 대소 문자 요구 가 엄격 하 므 로 잘못 쓰 지 않도록 주의 하 십시오.
# project name
PROJECT(opencv_test)
# requirement of cmake version
cmake_minimum_required(VERSION 3.5)
# set the directory of executable files
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
# name of executable file and path of source file
add_executable(opencv_test src/opencv_test.cpp)
# directory of opencv library
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries
target_link_libraries(opencv_test ${OpenCV_LIBS})
PROJECT 명령 어의 문법 은:
PROJECT(projectname [CXX] [C] [Java])
이 명령 으로 프로젝트 이름 을 정의 할 수 있 고 프로젝트 가 지원 하 는 언어 를 지정 할 수 있 습 니 다.지원 하 는 언어 목록 은 무시 할 수 있 습 니 다.
이 명령 은 두 개의 cmake 변 수 를 암시 적 으로 정의 합 니 다.
cmake_minimum_required(VERSION 3.5)
SET 명령 의 문법 은:SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
현 단계 에 서 는 SET 명령 이 명시 적 으로 변 수 를 정의 할 수 있다 는 것 만 알 면 된다.여기 서 변수 CMAKERUNTIME_OUTPUT_DIRECTORY 는${opencv 로 정의 합 니 다.test_SOURCE_DIR}/bin 은 프로젝트 경로 의 bin 디 렉 터 리 입 니 다. find_패키지 명령 어
find_패키지 라 는 명령 은 시스템 에서 프로젝트 구축 에 필요 한 프로그램 라 이브 러 리 를 자동 으로 찾 는 데 사 용 됩 니 다.Liux 와 유 닉 스 시스템 에서 이 명령 은 특히 유용 합 니 다.CMake 가 자체 적 으로 가지 고 있 는 모듈 파일 의 대부분 은 흔히 볼 수 있 는 오픈 소스 라 이브 러 리 에 대한 find 입 니 다.패키지 지원,지원 라 이브 러 리 의 종류 가 매우 많 습 니 다.
OpenCV 라 이브 러 리 를 찾 으 면 몇 개의 변 수 를 미리 정의 하 는 데 도움 이 됩 니 다.OpenCVFOUND、OpenCV_INCLUDE_DIRS、OpenCV_LIBRARY_DIRS、OpenCV_LIBRARIES 는 OpenCV,OpenCV 의 헤더 파일 디 렉 터 리,OpenCV 의 라 이브 러 리 파일 디 렉 터 리,OpenCV 의 모든 라 이브 러 리 파일 목록 을 찾 을 지 여 부 를 가리킨다.이어서 우 리 는 이 변 수 를 사용 하여 설정 할 수 있다.
include_directories(${OpenCV_INCLUDE_DIRS})
이 명령 은 포 함 된 헤더 파일 의 경 로 를 설정 하 는 데 사 용 됩 니 다.link_directories(${OpenCV_LIBRARY_DIRS})
이 명령 은 라 이브 러 리 파일 의 경 로 를 설정 하 는 데 사용 된다.target_link_libraries(opencv_test ${OpenCV_LIBS})
이 명령 은 필요 한 라 이브 러 리 파일 을 설정 하 는 데 사 용 됩 니 다.문법 은:TARGET_LINK_LIBRARIES(target library1<debug | optimized> library2...)
그 중의 target 은 앞에서 생 성 된 대상 파일(실행 가능 한 파일)을 설정 하 는 것 입 니 다.add_executable(opencv_test src/opencv_test.cpp)
이 명령 은 우선 실행 가능 한 파일 의 이름 이 고,그 다음은 원본 의 이름 이라는 것 을 이해 하기 쉽다.따라서 이 명령 은 반드시 TARGETLINK_LIBRARIES 전에 사용 합 니 다.이제 우리 CMakeLists.txt 소개 끝 났 습 니 다.
구축 프로젝트
build 디 렉 터 리 에 들 어간 다음 구축 을 시작 합 니 다:
cd build
cmake ..
CMakeLists.txt 는 built 의 부모 디 렉 터 리 에 있 기 때문에 make 명령 이후 에 사용...
그리고 실행 가능 한 파일 을 컴 파일 합 니 다:
make
실행 가능 한 파일 을 실행 하여 성공 여 부 를 테스트 합 니 다.이 프로그램 은 명령 행 인 자 를 전달 해 야 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pixar USD Houdini 플러그인 빌드Houdini 17.0.352 or 17.0.395 이 기사 현재의 Houdini Production Build는 17.0.352이므로, 그 쪽도 환경에 들고 있지만, 빌드시에 다음과 같은 문제가 있다. Instal...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.