はじめに
最近、OpenCVを意図せずアップデートしたところ、SIFTを使っているコードで警告が表示されました。その原因は、SIFTの特許が切れて普通に使えるようになったためでした。その時の備忘録です。
開発環境
Ubuntu 18.04.4 LTS
Python 3.6.9
opencv 4.5.1
dlib 19.21.1
遭遇した警告
OpenCV 4.5.1で以下コードを呼び出したところ
sift = cv2.xfeatures2d.SIFT_create()
以下の警告が出ました。
[ WARN:0] global /tmp/pip-build-uyw1ttra/opencv-contrib-python/opencv_contrib/modules/xfeatures2d/misc/python/shadow_sift.hpp (15) SIFT_create DEPRECATED: cv.xfeatures2d.SIFT_create() is deprecated due SIFT tranfer to the main repository. https://github.com/opencv/opencv/issues/16736
警告に表示されているリンクを確認すると、以下の記載がありました。
Description: In 2020 March the patent on one of the most popular feature detection algorithm, SIFT, expires. So, we can move the implementation from opencv_contrib/xfeatures2d to the main OpenCV repository (opencv/features2d) in the late spring or summer. We can also optimize and improve it further, probably create bit-exact implementation.
OpenCV 4.4.0のリリースノートに以下の記載がありました。
SIFT (Scale-Invariant Feature Transform) algorithm has been moved to the main repository (patent expired)
OpenCV 4.4.0での呼び出し方
xfeatures2dをネームスペースで指定する必要がなくなり、以下のように呼べ出せるようになりました。
sift = cv2.SIFT_create()
まとめ
オープンソースなのに特許を気にするのは煩わしいですが、OpenCV使用時の煩わしさが1つ減りました。