이 저장소는 OpenCV와 OpenMP를 사용해 병렬 이미지 처리를 시연하는 간단한 C++ 예제입니다. 빌드 구성은 CMake를 사용하며, Windows(MSVC + vcpkg)와 Unix 계열(Linux/macOS)을 모두 고려한 설정을 포함합니다.
프로그램은 4K 크기(2160x3840)의 테스트 이미지를 생성하여 OpenMP 병렬 for 루프로 그레이스케일 변환을 수행하고, OpenMP 관련 정보와 처리 시간을 출력합니다.
- OpenMP 병렬 처리를 사용한 행(row) 단위 그레이스케일 변환
- OpenCV를 이용한 이미지 데이터 구조 사용
- Windows(MSVC)용 vcpkg 정적 링크 설정 예시 포함
- CMake 3.15 이상
- C++17 호환 컴파일러
- Windows: MSVC (Visual Studio 2019/2022 등) 권장
- Linux/macOS: GCC 또는 Clang
- OpenCV (CMake에서 find_package로 사용)
- OpenMP 지원 (컴파일러/플랫폼에 따라 설정 필요)
Windows (MSVC + vcpkg, x64 static triplet 예시):
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# 실행 (Release 구성)
.\Release\my_program.exe참고: CMakeLists.txt는 Windows에서 사용자 프로필에 설치된 vcpkg 툴체인을 자동으로 참조하도록 설정되어 있습니다. vcpkg로 OpenCV를 설치할 때는 x64-windows-static 트리플렛을 사용하도록 권장합니다.
Linux / macOS:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
./my_programUnix 환경에서는 find_package(OpenMP REQUIRED)가 활성화되어 OpenMP를 링크합니다. 컴파일러가 OpenMP를 지원하지 않으면 _OPENMP 매크로가 정의되지 않아 병렬 코드가 비활성화될 수 있습니다.
- 프로그램 시작 시 OpenMP 사용 여부와
_OPENMP상수 값을 출력 - 병렬 처리 중 일부 행의 스레드 ID 로그 출력
- 전체 처리 시간(초) 출력 및 결과 이미지의 채널 수 출력
CMakeLists.txt: 빌드 스크립트 (Windows / Unix 분기 포함)main.cpp: 샘플 애플리케이션 (OpenMP + OpenCV 사용)
- Windows에서 정적 런타임(/MT)과 함께 vcpkg 정적 링크를 사용하도록 CMake 설정이 되어 있습니다. 필요에 따라
VCPKG_TARGET_TRIPLET이나 툴체인 설정을 조정하세요. - OpenCV 설치나 플랫폼별 세부 설정 관련 문제는 CMake 출력과 컴파일러 문서를 참고하세요.
원하시면 README에 빌드 예시를 더 추가하거나, 실행 결과 스크린샷과 샘플 이미지 저장 기능을 추가해 드리겠습니다.