#include <iostream>
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
// Driver code
int main(int argc, char** argv)
{
//----- COMMAND LINE -----
const String& filename = argv[1];
Mat image = imread(argv[1]);
//----- EXPLICIT WAY -----
//const String& filename = "C:/Users/letto/OneDrive/Things/sonoio.jpg";
//Mat image = imread(filename);
// Error Handling
if (image.empty()) {
cout << "Image File "
<< "Not Found" << endl;
// wait for any key press
cin.get();
return -1;
}
// Show Image inside a window with
// the name provided
imshow("Window Name", image);
// Wait for any keystroke
waitKey(0);
return 0;
}
使用上面的代碼,我正在嘗試打開影像。
我正在嘗試兩種方法:
- 命令行:我將影像 url 作為命令傳遞;
- 顯式方式:我明確地寫了影像網址。
第二種方法效果很好。使用第一種方法,我得到了這個例外:
Exception thrown at 0x00007FFAC1FFF551 (ucrtbased.dll) in OpenImg.exe: 0xC0000005: Access violation reading location 0x0000000000000000.
我正在使用 Visual Studio Code 2022,所以這是我通過命令列傳遞 url 的方式:

錯誤在哪里?請幫我看看,謝謝!
uj5u.com熱心網友回復:
您已經為編譯器而不是您運行的應用程式設定了額外的命令列引數 - 根據附加的影像。
要將命令列添加到應用程式,請右鍵單擊專案 (OpenImg) 并選擇除錯 -> 命令引數。
(而且,正如@user4581301 所提到的,通過檢查 args 來驗證引數是否存在會表明訪問 argv[1] 已經超出范圍。這是一個學習的好習慣。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437273.html
