Rust 에서 OpenCV사용하여 이미지를 저장하기

OpenCV Tutorial

Posted by Hebi on April 22, 2024

OpenCV Tutorial

Rust에서 OpenCV 를 사용하여 이미지 저장하기

Opencv사용하기

OpenCV를 이미지를 띄우기

이미지를 저장하기

이미지를 저장하려면 먼저 Mat에 데이터가 저장되어 있어야 합니다. 이미지를 불러와서 Mat에 저장을 해줍니다.

1
2
    let src = imgcodecs::imread("lion.jpeg", imgcodecs::IMREAD_UNCHANGED)?;

이미지를 src에Mat형태로 저장하였으면 이 데이터가 유효한지 확인을 해줍니다.만약 유효하지 않으면 프로그램을 종료시키도록합니다.

1
2
3
4
 if src.empty(){
        println!("{}","image load failed");
        std::process::exit(0);
    }

그다음 parameter 를 설정해줍니다.먼저 Vector을 생성한후 IMWRITE_JPEG_QUALITY95를 넣어줍니다. 화질정도를 설정하는것이며 0 ~ 100 을 넣을수있습니다. 0은 최저 화질이라 생각하면 됩니다.

1
2
3
    let  mut parms= core::Vector::default();
    parms.push(IMWRITE_JPEG_QUALITY);
    parms.push(95);

그다음 imgcodecs의 imrite를 불러와 저장할 경로와 Mat ,parms를 사용 이미지를 저장해줍니다.

1
    imgcodecs::imwrite("./img/write_test.png", &src, &parms)?;

이미지를 보여줍니다.

1
2
    highgui::imshow("image", &src)?;

이미지를 10초간 기다리며 10초후 모든 창을 종료합니다.

1
2
    highgui::wait_key(10000)?;
    highgui::destroy_all_windows()?;

이미지를 저장하게되며 다음과같이 지정된 이름으로 저장이됩니다.

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use opencv::{
    core::{self, MatTraitConst}, highgui, imgcodecs,Result
    
};

pub fn main()->Result<()>{
    let mut src= core::Mat::default();

    src = imgcodecs::imread("./img/lion.jpeg", imgcodecs::IMREAD_COLOR)?;

    if src.empty(){
        println!("{}","image load failed");
        std::process::exit(0);
    }
    let  mut parms= core::Vector::default();
    parms.push(imgcodecs::IMWRITE_JPEG_QUALITY);
    parms.push(95);
    imgcodecs::imwrite("./img/write_test.png", &src, &parms)?;

    highgui::imshow("image", &src)?;
    highgui::wait_key(10000)?;
    highgui::destroy_all_windows()?;
    Ok(())
}