我已經編寫了用於在C++中顯示圖像的代碼。使用C++顯示圖像
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
int main(int x,char*y)
{
string Image_Name = y[1];
Mat image=imread(Image_Name);
if (image.empty())
{
cout << "This is invalid input" << endl;
return -1;
}
namedWindow("Lenna", WINDOW_NORMAL);
imshow("Lenna",image);
waitKey(0);
return 0;
}
當我嘗試運行它,編譯器顯示我這些錯誤:
「嚴重性代碼說明項目文件行 錯誤C2440‘初始化’:無法從‘字符’轉換成 「STD :: basic_string的,標準::分配器>」 OpencvTest E:\編程示出圖像 ç\ \ opencvtest \ source.cpp 12「
和:
「嚴重性代碼描述項目文件行錯誤(活性)沒有 合適構造的存在是爲了從轉換 「CHAR」 到 「的std :: basic_string的, 的std ::分配器>」 OpencvTest E:\編程C本\顯示一個 image \ OpencvTest \ Source.cpp 12「
任何人都可以幫我解決這個錯誤嗎?
謝謝你的回答。我的答案只有一個問題:爲什麼我應該檢查「argc」是否等於2?因爲如果我沒有使用循環檢查,因此沒有問題,我的代碼,它運行成功。 –
如果通常稱爲「語句」,因爲它不會重複發生,與循環相反。檢查'argc == 2'的目的是確保有兩個參數:第一個參數總是可執行文件的名稱(例如「a.out」或「main.exe」 - 我不知道Visual Studio的名稱生成的可執行文件),第二個參數是圖像名稱。如果參數較少,那麼程序仍然會讀取argv [1]中的數據,但這會變成垃圾,或者可能導致程序崩潰,導致訪問超出界限。 – iksemyonov