以前LinuxへのGoCVへのインストール手順についてまとめました。
elsammit-beginnerblg.hatenablog.com
こちらの手順を元にRaspberry PiへOpenCVをインストールしようとしたのですが、、、
少しハマったのでハマった箇所や解決策についてまとめておこうと思います!!
■環境
・デバイス:Raspberry Pi 4
・OS:Raspbian GNU/Linux 10 (buster)
・GoCV:go version go1.15.6 linux/arm
【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】 新品価格 |
■ハマった箇所
以前まとめた手順通り、
go get -u -d gocv.io/x/gocv
を実行の上、
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
にてパスを通し、/usr/local/lib/pkgconfig配下のopencv4.pcを下記の通り編集します。
※もしopencv4.pcが存在しなければ新規で作成。
prefix=/usr/local exec_prefix=${prefix} includedir=${prefix}/include libdir=${exec_prefix}/lib Name: opencv4 Description: The opencv library Version: 4.0.0 Cflags: -I${includedir}/opencv4 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_img_hash -lopencv_imgcodecs -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_video -lopencv_videoio -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto
そして、、、
cd $GOPATH/src/gocv.io/x/gocv sudo make install
を実行!!
しばらくしたところビルドエラー。。。
ログを確認したところ、
../../../../gocv.io/x/gocv/core.go:2008: type [1073741824]C.struct_Point larger than address space ../../../../gocv.io/x/gocv/core.go:2008: type [1073741824]C.struct_Point too large
といったエラーが発生。
■解決策
先ほどの指摘されたコードは、
tmpslice := (*[1 << 30]*C.char)(unsafe.Pointer(strs.strs))[:length:length]
となります。
どうやら32bit OSである場合、
1 << 30
だとアドレスの範囲を超えてしまう(オーバー)してしまうようです。
このためこちらを、
1 << 20
に変更!!
そして再度、
sudo make install
を実行!!
問題なくエラーが発生せずにインストール成功しました。