programming language/C++

mac m2 - opencv์™€ cmake ๋นŒ๋“œ

moaoh 2024. 11. 12. 18:43

๋ชฉํ‘œ

๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—์„œ opencv๋ฅผ ์„ค์น˜ํ•˜๊ณ  cmake๋ฅผ ํ†ตํ•ด
๋‚ด๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ main.cpp ๋‚ด๋ถ€์—์„œ opencv๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

project
    - opencv
    - build
    - src
        - main.cpp
        - main.hpp
    - CMakeLists.txt

 

 

opencv clone ์ง„ํ–‰

git clone https://github.com/opencv/opencv.git

 

 

opencv ๋‚ด๋ถ€์—์„œ cmake ๋ฐ make ์ง„ํ–‰

cd opencv
mkdir build
cd build
cmake ..
make -j4
  • make -j4 : ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 4๊ฐœ๋กœ ๋ณ‘๋ ฌ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ•„์ž์˜ ์ž‘์—…ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์–‘์ด ๋ถ€์กฑํ•˜์—ฌ -j2 ํ˜น์€ ๊ทธ๋ƒฅ make๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

 

project/CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(openCVSample)

set(OpenCV_DIR "${CMAKE_SOURCE_DIR}/opencv/build")

find_package(openCVSample REQUIRED)

add_executable(openCVSample
        src/main.cpp
)

target_include_directories(openCVSample PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries(openCVSample PRIVATE ${OpenCV_LIBS})
  • ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ์ดํ›„์—๋Š” ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์™€ opencv๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ์œ„ํ•ด CMakeLists.txt๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

src/main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
  // OpenCV ๋ฒ„์ „ ์ถœ๋ ฅ
  std::cout << "OpenCV version: " << CV_VERSION << std::endl;

  // ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ์ €์žฅ ํ…Œ์ŠคํŠธ
  cv::Mat image = cv::Mat::zeros(100, 100, CV_8UC3);
  cv::circle(image, cv::Point(50, 50), 40, cv::Scalar(255, 0, 0), -1);
  cv::imwrite("test.jpg", image);

  // ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ
  std::cout << "Image created and saved as test.jpg" << std::endl;

  return 0;
}
  • ๊ฐ„๋‹จํ•œ openCV ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑ

 

ํ…Œ์ŠคํŠธ

mkdir build
cd build
cmake ..
make
./openCVSample
>> OpenCV version: 4.10.0-dev
>> Image created and saved as test.jpg

์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ ๋ฐ test.jpg๊ฐ€ ์ƒ์„ฑ๋œ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€์ˆ˜0