【问题标题】:Weird behavior in Rust with OpenCV使用 OpenCV 在 Rust 中的奇怪行为
【发布时间】: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

【问题讨论】:

  • 听起来像是未定义的行为,您应该在opencv crate 中报告错误。
  • @ker 所以传递 str 不是生锈问题还是什么?
  • Knovour:不,这绝对是图书馆的问题。如果您在安全代码中出现异常行为,则问题出在不安全代码中。因为您唯一的不安全代码是 opencv 板条箱中的代码,所以它必须在那里。
  • 已修复,我们应该将问题关闭为“问题不再重现”。

标签: opencv rust rust-cargo


【解决方案1】:

这个错误是reportedfixed。 0.2.2 版现在应该可以使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多