在SLAM十四講的代碼編譯程序中direct_method.cpp和optical_flow.cpp有CV_GRAY2BGR陳述句的報錯
這是因為CV_GRAY2BGR是opencv2的用法,而slambook2的的cmakelist.txt中opencv的庫用的是opencv4,
因此要將CV_GRAY2BGR改為cv::COLOR_BGR2GRAY,這是用來將彩色圖轉換灰度圖的,之后就可以順利編譯
但是編譯之后,在運行代碼的時候會出現英文報錯,意思是輸入的圖片通道數無效,(核心已轉儲)
這是因為在slambook2的ch8中提供的圖片本身就是單通道的灰度圖,不需要進行轉換,因此只需要將相應的代碼
注釋,再修改一下就好了,修改如下:
兩個cpp檔案中的有關彩色圖轉換的代碼都需要修改,否則都會報錯,
// cv::cvtColor(img2, img2_CV, cv::COLOR_BGR2GRAY);注釋掉這句
img2.copyTo(img2_CV); 直接將輸入的影像拷貝給img2
另外圖片路徑問題,由于再編譯的時候我們會習慣mkdir一個build檔案夾,編譯到這個檔案夾里,因此再運行時
可以將direct_method和optical_flow復制到ch8檔案里,然后運行,或者在代碼里將圖片路徑的代碼修改一下
例如:string left_file = "./left.png";改為string left_file = "../left.png";
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536204.html
標籤:其他
