【发布时间】:2015-12-31 23:02:59
【问题描述】:
这些天我正在尝试使用 Rust(1.4.0 版),并使用 opencv-rust 库进行编码。
我写了一些这样的代码。
extern crate opencv;
use self::opencv::highgui;
use self::opencv::core::Mat;
fn main() {
load("image/test4.jpg");
}
fn load(path: &str) {
let src: Mat = highgui::imread(path, 1).unwrap();
if src.empty().unwrap() {
println!("Img load error");
}
else {
println!("Img load success");
}
}
当我运行cargo run 时,它显示Img load error。
但是,当我在load 函数的第一行添加println! 时,就像
fn load(path: &str) {
println!("whatever");
let src: Mat = highgui::imread(path, 1).unwrap();
if src.empty().unwrap() {
println!("Img load error");
}
else {
println!("Img load success");
}
}
它显示Img load success。
但是当我将其更改为let a: i32 = 1;等其他代码时,它再次显示Img load error。
我不知道发生了什么。
系统信息:
- 操作系统:Manjaro Linux
- 内核:4.3.0
【问题讨论】:
-
听起来像是未定义的行为,您应该在
opencvcrate 中报告错误。 -
@ker 所以传递 str 不是生锈问题还是什么?
-
Knovour:不,这绝对是图书馆的问题。如果您在安全代码中出现异常行为,则问题出在不安全代码中。因为您唯一的不安全代码是 opencv 板条箱中的代码,所以它必须在那里。
-
已修复,我们应该将问题关闭为“问题不再重现”。
标签: opencv rust rust-cargo