概要
OpenCV
version3系から4系へアップデートしてcaffe
を動かそうとしたら、タイトルに記載のエラーが発生したが、なんとか対処できたので、その方法を記載する。
Dependencies
version | |
---|---|
Ubuntu | 20.04 |
Python | 3.8 |
caffe | 1.0 |
OpenCV | 4.5.5 |
発生したエラー
たとえばこんな感じのエラーが発生した。
.../caffe/util/io.cpp:77:5: error: 'CV_LOAD_IMAGE_GRAYSCALE' was not declared in this scope
77 | CV_LOAD_IMAGE_GRAYSCALE);
| ^~~~~~~~~~~~~~~~~~~~~~~
.../caffe/util/io.cpp: In function 'cv::Mat caffe::DecodeDatumToCVMat(const caffe::Datum&, bool)':
.../caffe/util/io.cpp:183:5: error: 'CV_LOAD_IMAGE_GRAYSCALE' was not declared in this scope
183 | CV_LOAD_IMAGE_GRAYSCALE);
| ^~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/caffe/CMakeFiles/caffe.dir/build.make:1350: src/caffe/CMakeFiles/caffe.dir/util/io.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:382: src/caffe/CMakeFiles/caffe.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
重要なポイントは以下のポイント。
error: 'CV_LOAD_IMAGE_GRAYSCALE' was not declared in this scope
error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
cv_img = cv::imread(image.first, CV_LOAD_IMAGE_COLOR);
caffeのcmakeやmake実行時にこのようなエラーが出ている場合、以下の対処法で解決する。
対処法
- CV_LOAD_IMAGE_COLOR
cpp
ソースコード上のCV_LOAD_IMAGE_COLOR
と書かれている箇所全てをcv::IMREAD_COLOR
に置換。 - CV_LOAD_IMAGE_GRAYSCALE
cpp
ソースコード上のCV_LOAD_IMAGE_GRAYSCALE
と書かれている箇所全てをcv::IMREAD_GRAYSCALE
に置換。
参考にした記事
以下のissueコメントに同内容が記載されている。
なかなか発見に時間がかかったので、この内容を日本語で記載したのが本記事。
原因について(の推測)
おそらく、CV_LOAD_IMAGE_GRAYSCALE
やCV_LOAD_IMAGE_COLOR
は古い書き方で、OpenCVのアップデートの中で、途中からcv::IMREAD_COLOR
やcv::IMREAD_GRAYSCALE
に書き換えられたのだろう。