[w5d1] 컴퓨터 비전 개요, OpenCV 설치 (Ubuntu 18.04.6 LTS)

GGG·2022년 3월 18일
0

OpenCV

목록 보기
1/7

(Ubuntu 18.04.6 LTS)
2022.03.14.
C++, VS code 사용
프로그래머스 자율주행 데브코스 3기

컴퓨터 비전 개요

컴퓨터 비전: 정지 영상(사진) 또는 동영상으로부터 의미 있는 정보를 추출하는 학문.
영상: image. 흔히 부르는 영상은 동영상을 의미했으나 요새는 혼용해서 사용.

  • Gray scale image: 흑백 사진. 밝기 정보를 0~255로 표현. [0,255]
  • True color image: 빛의 3원색인 red, green, blue를 각각 0~255의 256단계로 표현.

압축 등을 고려하지 않고 생각했을 때, true color image가 gray scale image와 비교하여 3배의 용량을 가짐.
통신 및 처리의 실시간성이 필요한 상황에서는 이러한 이유로 gray scale image가 선호됨.

C/C++에서는 각각의 이미지가 unsigned char 자료형(1 byte)으로 저장됨.
이미지는 배열의 형태로 생각할 수 있으며, 행렬 형태로 생각할 수 있음.

bmp: 비트의 집합. 용량이 큼.
png: 무손실 압축. 투명도를 포함해 4개 채널.
jpg: 손실 압축. 용량이 작음.

jpg의 압축률은 영상에 따라 달라지는데, 픽셀의 값이 급격하게 변하는 부분이 많은 고주파 영상에서는 압축이 비교적 덜 되는 모습을 볼 수 있음.

OpenCV 설치 [4.5.5 dev] ( Ubuntu 18.04.6 LTS )

Opencv 공식 설치 문서
https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.htm서
Build with opencv_contrib 부분 내용을 참고하여 설치함.

# Install minimal prerequisites (Ubuntu 18.04 as reference)
# 설치위해 필요한 것들 설치
sudo apt update && sudo apt install -y cmake g++ wget unzip
# Download and unpack sources
# 파일 설치
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
unzip opencv.zip
unzip opencv_contrib.zip
# Create build directory and switch into it
mkdir -p build && cd build
# Configure
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules ../opencv-4.x
# Build: 아래의 둘 중 하나만 사용. make -j4는 쓰레드를 4개 사용하여 빌드타임이 줄어듦.
# 자신의 쓰레드 수에 맞게 4를 수정해 사용 가능한데, 모르겠으면 cmake --build로 해도 무관.
cmake --build .
make -j4
# Install
sudo make install

인터넷 검색했을 때 다양한 방법들이 나왔는데, 공식 문서 사이트의 내용을 이용해서 설치했고, 특별한 문제는 발생하지 않았음.
Install까지 해야 최종 마무리. 정상작동 확인 후 build 폴더는 삭제해도 괜찮음.

VS code 이용한 환경(Cmake 이용)

#include "opencv2/opencv.hpp"

위를 include 해주면 opencv를 사용할 수 있음.


Cmake를 이용하여 코딩을 할 수 있게 하였으며, 아래의 문서에서 참고하여 사용함.
https://docs.opencv.org/4.x/db/df5/tutorial_linux_gcc_cmake.html

폴더 내부에는 CmakeList.txt와 main.cpp만 존재하면 되며, CmakeList.txt에는 아래와 같은 내용이 들어있음.

cmake_minimum_required(VERSION 2.8)
project( opencv )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )

이후 터미널에서 opencv_template 폴더에 들어가 아래를 작성하면 코드를 실행할 수 있음.

$ cmake .
$ make
$ ./main

자주 사용하기 때문에, ~/.bashrc에 alias를 아래에 한 줄 추가하여 사용하고 있음.

alias zxcv='cmake . && make && ./main'

이후 터미널 상에서 해당 폴더로 이동해 zxcv를 적으면 코드를 실행 가능함.

//main.cpp 예시
#include <iostream>
#include "opencv2/opencv.hpp"

int main()
{
    cv::Mat img = cv::imread("./resources/lenna.bmp",cv::IMREAD_COLOR);

    if (img.empty()){
        std::cerr << "Image load failed!" << std::endl;
        return -1;
    }

    cv::namedWindow("image");
    cv::imshow("image",img);
    cv::waitKey();
    cv::destroyAllWindows();
    return 0;
}

위와 같이 사용하려면 폴더 내에 resources 폴더가 존재해야하며, 안에 lenna.bmp 파일이 있어야 창에 파일이 나타남.

profile
GGG

0개의 댓글