3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

nvidia Jetson × opencv問題

Last updated at Posted at 2022-05-20

Jetsonとopencvでエラー発生

散見されるJetson×opencv問題:imp:

Jetsonを使っている方々に少しでもためになればと思い書きました.
nvidia jetsonシリーズで,既存ライブラリをCMakeなどでビルドしたときにこんなエラーが出たことはないでしょうか?

fatal error: opencv2/core/core.hpp: No such file or directory
 #include <opencv2/core/core.hpp>

opencv2/core/core.hppと同様に,opencv2のincludeパスが見つからないというエラーが出たときはこちらの記事で解決できます.

includeパスでエラーが出ているようなので/usr/includeの中身を見てみると...
Screenshot from 2022-05-20 12-43-54.png

opencv2という名前のフォルダがなく変わりにopencvという名前のフォルダがありました
なぜだnvidiaさん...

更にlsコマンドで調べてみると...
opencvという名前のフォルダが
/usr/include/opencv4/opencv2フォルダのシンボリックリンクになっているようです.

ls -l /usr/include

# 以下結果
lrwxrwxrwx   1 root root     29  1月  9 16:44 opencv -> /usr/include/opencv4/opencv2/

つまりなぜエラーが出ているかというと...
opencvのもともとのincludeパスは opencv2/... (例 opencv2/core/core.hpp) なはずなのに,jetsonのデフォルトではinclude直下のシンボリックリンクのフォルダ名が opencv となっていて,デフォルトのままではincludeパスを /opencv/... (例 opencv/core/core.hpp)にしないとbuildできない
って感じです
そこはopencv2にしといてくださいって感じですホント

シンボリックリンクのお話はこちらがわかりやすいかと思います
https://qiita.com/go_astrayer/items/ab993cdc420d4f7f50d4

解決策

ファイルのインクルードパスを変えるのはさすがにきつすぎる...
ということで
opencvフォルダと同様に,opencv2という名前で/usr/incude/opencv4/opencv2のシンボリックリンクを作成します.

cd /usr/include
sudo ln -s /usr/include/opencv4/opencv2 opencv2

作成後,opencv2のフォルダが作成されてそこから/usr/incude/opencv4/opencv2に飛ぶことができます

実行後のusr/includeフォルダはこんな感じ

Screenshot from 2022-05-20 13-09-43.png

opencv2に入ると中身は/usr/incude/opencv4/opencv2と一緒です
Screenshot from 2022-05-20 13-13-16.png

これでビルドしてもエラーが出なくなりました!!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?