[英]How to use a variable int within a filename string in C++/openFrameworks
[英]OpenCV imread(std::string filename, int flags) problem when using a variable for string filename in c++
我有一個 function 是這樣的:
void OpenPattern(std::string filename, bool type){
Mat img = cv::imread(filename, cv::IMREAD_COLOR);
if(img.empty()){
printf("CANNOT OPEN IMAGE");
}else{
doSomethingElse();
}
}
代碼編譯正常,但是當我運行它時,img 總是空的。 我已經測試了存儲圖像的相對路徑和完整路徑的文件名。 都沒有在這里工作。 我每次都打印文件名內容,它與圖像地址完美匹配。 它僅在我這樣測試時才有效:
void OpenPattern(std::string filename, bool type){
filename="path to image" //worked with relative and full path
Mat img = cv::imread(filename, cv::IMREAD_COLOR);
//or
//Mat img = cv::imread("path to image", cv::IMREAD_COLOR);
if(img.empty()){
printf("CANNOT OPEN IMAGE");
}else{
doSomethingElse();
}
}
我想很多人都問過類似的問題(就像這里的這個imread() won't read string variable in c++ ),但我還沒有找到答案。
有誰知道為什么當文件名是 function 參數時 imread() 根本無法打開? 或者有誰知道是否有辦法調查 imread 決定返回 NULL Mat 的位置,這樣我可以更好地調查發生了什么?
編輯:
非常感謝!
我不知道 OpenCV,但也許這會有所幫助。 這些是我在使用其他庫和語言時遇到的問題。
確保路徑格式正確。 你有沒有逃脫斜線和其他特殊字符? 您是否嘗試過正斜杠和反斜杠? 您是否有空格,但不受支持? 您是否嘗試過以斜線開頭和不以斜線開頭的路徑?
我發現在 function 的參數中傳遞的字符串有一個不可見的 '\r' 導致 imread() 錯過了文件。
我嘗試將參數字符串的大小與寫入的字符串“圖像路徑”進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.