비디오 코덱을 학습하기 위해서 VScode에 OpenCV를 다운받아 c++로 예제를 돌려보려고 했다.
검색해 봤을 때, task.json과 c_cpp_properties.json을 수정하는 방법이 많아 이 방법으로 시도했지만, 계속 해서 오류가 났다.
결국 지피티의 도움으로 cmake를 이용해 openCV를 이용하는데 성공했다.
우석 혹시 몰라 설치했던 openCV를 삭제했다.
brew uninstall opencv
Homebrew로 OpenCV 설치
1. Homebrew 업데이트:
brew update
2. OpenCV 설치:
brew install opencv
3. OpenCV 설치 확인:
brew info opencv
--> usr/local/Cellar/opencv/4.10.0_12 가 뜸
--> Homebrew를 통해 설치된 OpenCV의 기본 경로입니다. 문제없이 사용 가능합니다!
Homebrew를 사용하면 OpenCV의 파일이 /usr/local/Cellar/opencv에 설치되고, 심볼릭 링크를 통해 /usr/local/include와 /usr/local/lib에서 접근할 수 있도록 설정됩니다.
VS Code 및 CMake 설정
- CMake Tools: VS Code의 CMake Tools 확장을 설치
- C++ IntelliSense: C++ 관련 작업을 위한 확장 프로그램도 설치
프로젝트 디렉토리 구조
프로젝트를 설정할 디렉토리 만들기
CMakeLists.txt , main.cpp
CMakeLists.txt 작성
cmake_minimum_required(VERSION 3.10)
project(OpenCVProject)
# C++ 표준 설정
set(CMAKE_CXX_STANDARD 17)
# OpenCV 패키지 찾기
find_package(OpenCV REQUIRED)
# 실행 파일 생성 및 라이브러리 연결
add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})
# 헤더 파일 경로 포함
include_directories(${OpenCV_INCLUDE_DIRS})
main.cpp 예제
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat image = cv::imread("test.jpg");
if (image.empty()) {
std::cerr << "Could not read the image!" << std::endl;
return 1;
}
cv::imshow("Display window", image);
cv::waitKey(0); // Wait for a keystroke
return 0;
}
빌드 및 실행
1. 빌드 디렉토리 생성
CMake는 빌드 파일을 따로 관리 / 프로젝트 폴더에서 빌드 디렉토리를 생성
mkdir build && cd build
2. CMake 빌드 설정
cmake ..
3. 컴파일 및 실행
cmake --build .
./main
추가 설정
IntelliSense 설정
c_cpp_properties.json 파일에 OpenCV 헤더 경로를 추가
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/opt/homebrew/include/opencv4"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-x64"
}
],
"version": 4
}
- 이미지 파일은 이름만 사용할 경우, build 폴더에 존재해야 잘 돌아 갔음 --> 또는 상대 결로나 정대 경로를 사용하면 됨
- cmake 사용시 코드를 수정할때마다 빌드를 다시 해줘야 함
- VS Code CMake Tools을 사용하기 떄문에 fn + f7로 빌드 가능!
'비디오 코덱' 카테고리의 다른 글
흑백 이미지 처리의 효율 (1) | 2024.11.27 |
---|---|
컬러를 흑백으로 변환하기 : cvtColor() (0) | 2024.11.27 |
imread(), imshow() 사용해보기 (0) | 2024.11.27 |
OpenCV란 (0) | 2024.11.27 |
Cmake에 대해 (1) | 2024.11.25 |