Rust에서 OpenCV 사용

Sahil Bhosale 2023년9월19일
  1. 녹 명령
  2. 녹 설치
  3. 녹 시작하기
  4. Rust에서 OpenCV 사용
Rust에서 OpenCV 사용

Rust는 (실행 속도 측면에서) 빠르고 보다 확실한 소프트웨어를 작성하는 데 도움이 되는 프로그래밍 언어입니다. 실질적인 유형 시스템 및 소유권 모델로 메모리 관리를 처리합니다.

이는 정적 컴파일 언어입니다. 즉, Rust 프로그램을 작성하면 바이너리 실행 파일로 컴파일할 수 있으며 이 파일은 Rust가 설치되지 않은 다른 시스템에서 실행할 수 있습니다. 코드를 실행하려면 통역사가 필요하기 때문에 다른 언어와 다릅니다.

또한 오류 처리, 버그 잡기, 데이터 표현 및 동시성에도 좋습니다. 이 언어는 초보자에게 권장되지 않습니다. 더 나은 이해를 위해 하나 이상의 프로그래밍 언어에 익숙해야 합니다.

녹 명령

먼저 일부 Rust 명령에 대한 기본 개요를 살펴보겠습니다.

  • rustc: rustc는 Rust 코드를 컴파일하는 데 사용되는 Rust 컴파일러입니다. Rust에서 입력 코드를 가져와 바이너리 코드/기계가 읽을 수 있는 코드로 컴파일합니다.
  • rustup: rustup 명령은 Rust를 설치하고 업데이트하는 데 사용됩니다.
  • cargo: Python용 pip, Ruby용 gem, JavaScript용 npm과 같은 다른 언어와 유사한 Rust 빌드 시스템 및 패키지 관리자입니다.

나머지 명령은 터미널에서 cargo를 사용하여 확인할 수 있습니다.

녹 설치

이미 시스템에 Rust를 설치했다면 이 단계를 건너뛸 수 있습니다. 시스템에 Rust가 설치되어 있지 않은 경우 시스템에 대해 아래에 제공된 단계를 따를 수 있습니다.

Linux/Mac 시스템의 경우

유닉스 시스템에 Rust를 설치하려면 아래 명령을 복사하여 터미널에 붙여넣고 Enter를 누르십시오.

curl https://sh.rustup.rs -sSf | sh

이 코드는 시스템에 Rust를 다운로드하고 설치합니다.

설치 옵션을 묻는 경우 기본 설치를 선택하려면 1을 입력하고 Enter를 눌러 설치 진행(기본값)을 선택합니다.

다운로드 후 화면 끝에 "Rust가 설치되었습니다. 훌륭합니다!"가 표시되고 그 아래 "계속하려면 Enter 키를 누르십시오" 가 표시되므로 Enter를 누릅니다. 터미널을 닫습니다.

Rust가 올바르게 설치되었는지 확인하기 위해 새 터미널을 다시 열고 아래 명령을 사용하여 Rust 버전을 표시할 수 있습니다.

rustc --version

버전 번호, 커밋 해시 및 커밋 날짜가 나타나면 Rust가 성공적으로 설치되었다고 말할 수 있습니다.

녹 시작하기

먼저 터미널로 이동하여 다음 코드를 입력합니다. Rust가 설치된 경로는 터미널의 경로와 동일해야 합니다.

cargo

그러면 Rust에서 사용되는 모든 패키지와 명령이 표시됩니다.

그런 다음 cargo를 사용하여 Rust에서 새 프로젝트를 생성하기 위한 아래 코드를 입력합니다. 이것은 opencv-rust라는 이름의 이진 코드 프로젝트입니다.

cargo new --bin opencv-rust

이제 화면에 "Created binary (application) opencv-rust package" 출력이 표시됩니다. 이 명령으로 opencv-rust라는 새 바이너리 파일을 만들었습니다.

이제 아래 명령을 사용하여 이 프로젝트를 엽니다.

cd opencv-rust

이렇게 하면 경로가 업데이트되고 프로젝트가 열립니다. 이제 이 프로젝트에 대한 코드를 작성하려면 다음을 입력하십시오.

code .

이렇게 하면 Visual Studio Code가 열립니다.

이제 왼쪽 srcmain.rs 파일로 이동합니다. main.rs를 선택하고 엽니다. 오른쪽에서 이미 존재하는 상용구 코드를 볼 수 있습니다. 그런 다음 Ctrl+Shift+`를 사용하여 VSCode 터미널로 이동하고 아래 명령을 실행합니다.

cargo build
cargo run

그러면 패키지와 종속성이 컴파일되고 코드가 실행됩니다. VSCode 터미널에서 보일러 코드의 출력을 볼 수 있습니다.

Rust에서 OpenCV 사용

OpenCV를 설치하기 전에 OpenCV용 패키지 컴파일러와 프로젝트 빌드 시스템을 설치해야 합니다. 설치하려면 Mac용 패키지 관리자인 Homebrew 또는 brew를 설치해야 합니다. 이 link를 사용하여 brew를 설치할 수 있습니다.

그런 다음 이제 아래 패키지를 설치하고 OpenCV용 시스템을 하나씩 빌드합니다. 첫 번째는 라이브러리 컴파일에 사용되는 도구인 pkg-config입니다.

brew install pkg-config

두 번째는 네이티브 라이브러리 빌드를 지원하는 빌드 시스템인 CMake 시스템을 설치하는 것입니다. 이를 위해 아래 코드를 따릅니다.

brew install cmake

이제 OpenCV를 처리하고 객체 파일로 변환하는 데 필요한 모든 도구, 라이브러리 및 헤더 파일을 포함하는 OpenCV 패키지 및 llvm을 설치합니다.

brew install --debug llvm-dev
brew install libopencv-dev

libopencv-dev는 OpenCV 라이브러리를 설치합니다. 이 단계 후에 환경 경로를 내보내는 것이 중요합니다.

OpenCV가 제대로 작동하는지 확인하려면 OpenCV 프로그램을 만들어야 합니다. 왼쪽을 보면 Cargo.toml 파일을 찾을 수 있습니다. 그것을 클릭하면 오른쪽에 파일이 열리고 아래 종속성이 열립니다.

종속성 아래에 다음 코드를 추가합니다.

opencv = "0.73.0"
bytes = "1"
anyhow = "1"

버전 이름을 찾으려면 crates.io 웹 사이트를 방문하고 OpenCV를 검색하여 사용 가능한 최신 버전을 찾을 수 있습니다. 이 글을 작성할 때 최신 버전이 0.73.0인 것을 확인하여 VSCode에서 업데이트했습니다.

이제 srcmain.rs 파일로 이동하여 아래의 간단한 OpenCV-Rust 프로그램을 작성하십시오.

이것은 OpenCV를 사용하여 이미지를 가로로 뒤집는 간단한 Rust 코드입니다.

코드 스니펫 - (Rust):

use anyhow::Result;
use opencv::{
    core::{self, Mat, Vector},
    imgcodecs,
};

fn main() -> Result<()> {
    let source_img = imgcodecs::imread("car.png", imgcodecs::IMREAD_UNCHANGED)?;

    // Flipping image horizontally
    let mut destination_arr = Mat::default();
    core::flip(&source_img, &mut destination_arr, 1)?;

    // Creating an output image
    let arguments: Vector<i32> = Vector::new();
    imgcodecs::imwrite("final-output.png", &destination_arr, &arguments)?;
    Ok(())
}

먼저 anyhowopencv 라이브러리에서 몇 가지 메서드를 가져왔습니다: Result, Mat, Vectorimgcodecs. 그런 다음 결과를 반환하는 main 함수를 만들었습니다.

출력의 오류를 자동으로 처리하기 위해 anyhow 라이브러리의 Result 를 사용하고 있습니다.

Rust 코드 내에서 소스 이미지를 읽으려면 imgcodecs에서 OpenCV의 imread를 사용하고 source_img 변수에 저장해야 합니다. 이 예에서는 파일 이름과 확장자가 car.png인 자동차 이미지를 사용합니다.

이제 이미지를 읽었으므로 다중 채널 배열인 Mat를 전달할 destination_Arr을 만들어야 합니다. 이미지를 가로로 뒤집으려면 OpenCV 라이브러리의 flip을 사용하고 source_img, destination_arr1flip 메서드에 전달해야 합니다.

마지막 매개변수 1은 이미지를 수평으로 뒤집습니다. 이미지를 세로로 뒤집고 싶다면 1 대신 0을 전달할 수 있습니다.

뒤집힌 이미지를 출력으로 저장하려면 OpenCV의 imwrite 메서드를 사용해야 합니다. 여기에서 파일 이름을 첫 번째 매개 변수에 전달하여 출력 파일에 이름을 지정할 수 있습니다.

마지막으로 코드를 실행할 준비가 되었습니다. 코드를 빌드하고 실행하려면 아래 두 명령을 실행해야 합니다.

cargo build
cargo run

출력:

OpenCV 녹 출력

그러면 Rust 코드가 컴파일되고 실행됩니다. 이 명령의 출력은 위에 나와 있습니다.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn