3

以下代碼是OpenCV中相機校準程序的一部分。但是,我得到一個錯誤,當我運行程序:它說應該在哪裏放置配置文件?

無法打開配置文件

我把配置文件中的c:/Nn/default.xml但我仍然得到這個錯誤

燦你幫我看看代碼有什麼問題?我把文件放在錯誤的路徑中了嗎?

int main(int argc, char* argv[]) 
{ 
help(); 
Settings s; 
const string inputSettingsFile = argc > 1 ? argv[1] : "c:/Nn/default.xml"; 
FileStorage fs(inputSettingsFile, FileStorage::READ); // Read the settings 
if (!fs.isOpened()) 
{ 
    cout << "Could not open the configuration file: \"" << inputSettingsFile << "\"" <<   endl; 
    return -1; 
} 
fs["Settings"] >> s; 
fs.release();           // close Settings file 

if (!s.goodInput) 
{ 
    cout << "Invalid input detected. Application stopping. " << endl; 
    return -1; 
} 

vector<vector<Point2f> > imagePoints; 
Mat cameraMatrix, distCoeffs; 
Size imageSize; 
int mode = s.inputType == Settings::IMAGE_LIST ? CAPTURING : DETECTION; 
clock_t prevTimestamp = 0; 
const Scalar RED(0,0,255), GREEN(0,255,0); 
const char ESC_KEY = 27; 

回答

-1

沒有標準的解決方案。首先,有兩種類型的 配置文件:用戶提供的這些配置文件用於以他喜歡的方式(顏色等)配置 程序,以及在內部使用 以避免重新編譯和重新傳送新文件二進制 隨時可能出現一些小的外部因素變化。第一種是傳統上在Unix下的$HOME下的 ,在單個文件或目錄中,其名稱 以.開頭;在Windows下,我認爲他們通常在 c:\Documents and Settings\username\ApplicationData\appliname之下。 對於內部配置數據,在Unix下,我是一個普通的 約定,用戶設置一個環境變量,它指定了一個 根;您的可執行文件位於此目錄下的bin目錄中,以及etc目錄中的任何 配置數據。 (在Unix下,沒有可靠的方法可以從你的加載位置知道)。在Windows下, 配置數據與可執行文件位於同一目錄中,並且 程序使用GetModuleFileName來查找此目錄。

-1

只需檢查您是否在鏈接器輸入部分指定了正確的.lib文件(假設您使用的是Visual Studio 2010)。 用於調試模式使用---- d.lib文件和用於發佈模式的使用----。lib文件。我遇到了同樣的問題,這就是我解決問題的方法。

1

我同意Ujjwal,因爲我在* opencv \ build \ x86 \ vc10 \ lib文件夾下的鏈接器中都包含* .lib和* d.lib文件,所以我遇到同樣的問題。

如果您在調試模式下在VS2010中進行編譯,請僅在鏈接器中包含'opencv \ build \ x86 \ vc10 \ lib'下的以d結尾的文件,它應該可以解決問題。如果您在發佈模式下編譯,只包含不在d結尾的.lib文件。另外,由於您使用'windoze',因此我建議您將輸入文件從「c:/Nn/default.xml」更改爲「c:\\ Nn \\ default.xml」。

0

我面臨着同樣的問題。但我得到了它的F:\default.xml

工作試試看吧。

相關問題