使用 c++ 显示图像

Showing an image using c++

本文关键字:图像 显示图 显示 c++ 使用      更新时间:2023-10-16

我写了这段代码来用 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,std::allocator>' OpencvTest e:\programming c\显示图像\openCVtest\来源.cpp 12 "

和:

"严重性代码描述项目文件行错误(活动)否 存在合适的构造函数以从"char"转换为 "标准::basic_string, std::allocator>" OpencvTest e:\programming C\Show an 图像\OpencvTest\Source.cpp 12"

任何人都可以帮助我解决此错误吗?

小错误:

int main(int x,char*y)

应改为

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

int main(int x, char **y)

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

请参阅 http://en.cppreference.com/w/cpp/language/main_function 和 http://en.cppreference.com/w/cpp/string/basic_string/basic_string 以供参考。

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

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

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