//从内存中加载图片

pub fn get_img_info_mem(img_data:  Vec<u8>) -> Result<core::Mat,String> {
    let mut data= Vector::from_iter(img_data);
    let data=VectorOfu8::from(data);//和上面的一行代码可以合成一行
    imgcodecs::imdecode(&data, IMREAD_COLOR).or_else(|e| {
        Err(format!("opencv load image fail :{}", e))
    })
}
imdecode(buf: &dyn core::ToInputArray, flags: i32) -> Result<core::Mat> 

Vector<u8> 实现了ToInputArray,不是标准库的Vec<>,所以通过Vector::from_iter这个函数进行了转换

//从文件中生成图片

pub fn get_img_info(img_path: &str) -> Result<core::Mat,String> {
    imgcodecs::imread(img_path, IMREAD_COLOR).or_else(|e| {
        Err(format!("opencv load image fail :{}", img_path))
    })
}

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐