如何用opencv-rust实现Hello World

发布时间:2021-10-13 15:06:16 作者:iii
来源:亿速云 阅读:386

本篇内容主要讲解“如何用opencv-rust实现Hello World”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用opencv-rust实现Hello World”吧!

opencv-rust

安装

$ sudo apt install clang -y
$ sudo apt install libclang-dev -y

// 首先安装好opencv
$ opencv_version
4.5.1

写一个例子

Cargo.toml

opencv = {version = "0.52", default-features = false, features = ["opencv-34", "buildtime-bindgen"]}

main.rs


运行不通过,需要安装一个微软的工具——vcpkg

$ git clone https://github.com/microsoft/vcpkg
$ ./vcpkg/bootstrap-vcpkg.sh
$ sudo cp vcpkg /usr/bin
$  vcpkg install boost:x64-linux
$ export VCPKG_ROOT=/usr/local/vcpkg
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDAROOT/lib64:/usr/lib/x86_64-linux-gnu:/usr/local/lib
$ export export PKG_CONFIG_PATH=/usr/local/vcpkg/installed/x64-linux/lib/pkgconfig/:/usr/share/pkgconfig/:/usr/local/lib/pkgconfig/

遇到一个奇葩问题

Error: "Failed to find OpenCV package using probes: environment, pkg_config, vcpkg_cmake, vcpkg, cmake"

找遍了google、baidu、bing都没有找到原因,后来应验我常说的俗语“当你搜索不到有关这个问题的任何记录的时候,就是你自己的问题。”

我试着执行了一下下面的语句

$ pkg-config --modversion opencv
3.2.0

大家还记得我在Cargo.toml里面是怎么定义的吧?

opencv = {version = "0.52", default-features = false, features = ["opencv-34", "buildtime-bindgen"]}

我改成

opencv = {version = "0.52", default-features = false, features = ["opencv-32", "buildtime-bindgen"]}

这个问题解决了,但是依然编译不过,这个时候出现的都是各种语法错误,看来我得把版本升到3.4.0。

后来发现是乌龙了,使用opencv-32 没有问题,是因为原来程序里面需要一个图片,我没有放在当前路径下。

最后编译的过程:

$ RUST_BACKTRACE=full cargo build -vv

但是video依然不行,我还得努力升级opencv,必须是3.4才可以。

$ sudo apt-get purge libopencv* python-opencv
$ sudo apt-get install libopencv* python-opencv
$ pip3 uninstall opencv-python-headless

安装opencv_3.4.14

$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
$ git clone https://github.com/opencv/opencv.git
$ cd opencv
$ mkdir build
$ cd build

$ sudo cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CMAKE_LIBRARY_PATH=/usr/local/cuda-11.0/lib64/stubs -D CUDA_CUDA_LIBRARY=/usr/local/cuda-11.0/lib64/stubs/libcuda.so ..

$ sudo make -j8

$ sudo make install
https://github.com/opencv/opencv/tree/3.4.14  去这里下载一个zip包

安装方式同上

最后这个成功了

:tada:tada:tada:tada:tada:tada:tada:tada:tada:tada:tada:::::::::::

下面是一个简单的例子

Cargo.toml

opencv = {version = "0.52", default-features = false, features = ["opencv-34", "buildtime-bindgen"]}
use opencv::{
	highgui,
	imgcodecs,
	Result,
};

fn main() -> Result<()> {
	let image = imgcodecs::imread("lena.jpg",imgcodecs::IMREAD_ANYCOLOR)?;
	highgui::named_window("hello opencv!", 0)?;
	highgui::imshow("hello opencv!", &image)?;
	highgui::wait_key(10000)?;
	Ok(())
}
$ RUST_BACKTRACE=full cargo build -vv

大成功。

到此,相信大家对“如何用opencv-rust实现Hello World”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. Hello World, Perl
  2. Hello World大全

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:vbs中如何实现shellcode转换escape加密

下一篇:如何使用vbs解答一道初中数学题i,x,y

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》