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_QUALITY
와 95
를 넣어줍니다. 화질정도를 설정하는것이며 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(())
}