使用c+显示图像+; 我编写了这个代码,用于显示C++中的图像。p> #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; } #包括 #包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间cv; int main(int x,char*y) { 字符串Image_Name=y[1]; Mat image=imread(图像名称); if(image.empty()) { cout“OpencvTest e:\programming C\显示 image\OpencvTest\Source.cpp 12“

使用c+显示图像+; 我编写了这个代码,用于显示C++中的图像。p> #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; } #包括 #包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间cv; int main(int x,char*y) { 字符串Image_Name=y[1]; Mat image=imread(图像名称); if(image.empty()) { cout“OpencvTest e:\programming C\显示 image\OpencvTest\Source.cpp 12“,c++,image,opencv,image-processing,C++,Image,Opencv,Image Processing,有人能帮我解决这个错误吗?小错误: int main(int x,char*y) 应该读 int main(int x, char*y[]) 或 没有构造函数可以从char转换到std::string实际上,只有从char*或char和整数计数转换 请参阅和以供参考 另外,这两个参数也有标准名称:argc-参数计数和argv-参数值。最好坚持标准 您还需要检查argc是否等于2,否则没有第二个参数可以读取 编辑:检查argc>=2比严格地检查argc==2更有意义,在这种情况下,程序将忽略第

有人能帮我解决这个错误吗?

小错误:

int main(int x,char*y)
应该读

int main(int x, char*y[])

没有构造函数可以从
char
转换到
std::string
实际上,只有从
char*
char
和整数计数转换

请参阅和以供参考

另外,这两个参数也有标准名称:
argc
-参数计数和
argv
-参数值。最好坚持标准

您还需要检查
argc
是否等于2,否则没有第二个参数可以读取


编辑:检查
argc>=2
比严格地检查
argc==2
更有意义,在这种情况下,程序将忽略第二个参数之后的参数。

谢谢你的好答案。我对你的答案只有一个问题:为什么要检查“argc”等于2?因为如果我不使用if循环进行检查,我的代码就不会有问题,它会成功运行。if通常被称为“语句”,因为与循环相比,它不会重复出现。检查
argc==2
的目的是确保有两个参数:第一个参数始终是可执行文件名(例如“a.out”或“main.exe”-我不知道Visual Studio如何命名生成的可执行文件),第二个参数是图像名称。如果参数较少,则程序仍将读取argv[1]处的数据,但这将是垃圾,或者可能导致程序崩溃,访问权限超出范围。
int main(int x, char **y)