OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)
1. 由于宏名稱的變更照成的“未聲明的標識符”系列問題
有時候,遇到此類問題加入一句 #include <cv.h> 便可以讓 OpenCV3 或者 OpenCV4 也能認識一些 CV_ 前綴的宏,將問題解決掉,因為有不少 OpenCV1 的宏依然在 OpenCV3 或者 OpenCV4 的 cv.h 頭文件中有定義。
問題:在 OpenCV3/ OpenCV4 的環境下運行 OpenCV2 中寫的程序,報 error C2065: <CV_WINDOW AUT0SIZE,:未聲明的標識符 系列錯誤。
分析: OpenCV3/OpenCV4 取消了 OpenCV1 中殘留的 CV_ 式的宏前綴命名規范,對這些 CV_ 前綴的宏使用了新的命名規范。這里有幾種情況要分類討論。
1.1 直接去掉“CV_” 前綴
在這種情況下,比較典型的有如下一些函數。
-
namedWindow函數中,例如將CV_WINDOW_AUTOSIZE改為WINDOW_AUTOSIZE -
threshold函數中,例如將CV_THRESH_BINARY改為THRESH_BINARY -
line函數等一系列繪圖函數中,CV_FILLED改為FILLED -
remap函數中,CV_INTER_LINEAR改為INTER_LINEAR -
在鼠標操作函數
SetMouseCallback中,將CV_EVENT_LBUTTONUP改為EVENT_LBUTTONUP、
CV_EVENT_LBUTTONDOWN改為EVENT_LBUTTONDOWN,
CV_EVENT_FLAG_LBUTTON改為EVENT_FLAG_ LBUTTON、
CV_EVENT_MOUSEMOVE改為EVENT_MOUSEMOVE -
HoughCircles函數中, 將CV_HOUGH_GRADIENT改成HOUGH_GRADIENT。 -
inpaint函數中,將CV_INPAINT_TELEA改為INPAINT_TELEA, 將CV_INPAINT_NS改為INPAINT_NS -
matchTemplate函數中,將CV_TM_SQDIFF改為TM_SQDIFF、CV_TM_SQDIFF_NORMED改為TM_SQDIFF_NORMED -
在
imwrite函數相關使用中,將CV_IMWRITE_PNG_COMPRESSION改成IMWRITE_PNG_COMPRESSION -
設置攝像頭尺寸的時候,將
CV_CAP_PROP_FRAME_WIDTH改為CAP_PROP_FRAME_WIDTH、CV_CAP_PR0P_FRAME_HEIGHT改為CAP_PR0P_FRAME_HEIGHT
1.2 使用新的前綴替換
在這種情況下,比較典型的有如下一些函數。
line函數等一系列繪圖函數中,CV_AA改為LINE_AAcvtColor函數中顏色空間轉換系的宏,全替換為COLOR_前綴,如CV BGR2HSV改為COLOR_BGR2HSVnormalize函數中,將CV_MINMAX改為NORM MINMAXmorphologyEx函數中的宏,全部替換為MORPH_前綴,如CV_MOP_OPEN改為MORPH_OPENthreshold函數中的宏,全部替換為THRESH_前綴,如將CV_THRESH_BINARY改THRESH_BINARY
1.3 使用新命名空間的宏
在這種情況下, 比較典型的有如下一些函數。
-
TermCriteria函數中,CV_TERMCRIT_EPS改為TermCriteria::EPS、CV TERMCRIT ITER改為TermCriteria::MAX_ITER -
CascadeClassifier::detectMultiScale函數中,CV_HAAR_SCALE_IMAGE改為CASCADE_SCALE_IMAGE。
2. 其它細節
-
features2d.hpp頭文件路徑的更改。將#include<opencv2/nonfree/features2d.hpp>改為#include <opencv2/features2d.hpp> -
core.hpp頭文件路徑更改。將#include <opencv2/core/core.hpp>改為#include <opencv2/core.hpp> -
用
format進行格式化輸出時, 將format(r,"python")改成format(r, Formatter::FMT_PYTHON) -
定義尺寸時,將
cvSize(-1,-1)改為Size(-1,-1) -
在表示顏色時,將
CV_RGB改為Scalar
總結
以上是生活随笔為你收集整理的OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国文化旅游业投资分
- 下一篇: OpenCV 笔记(05)— openc