使用c ++显示图像

时间:2017-01-22 07:46:19

标签: c++ image opencv image-processing

我已编写此代码用于在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;

}

当我尝试运行它时,编译器会向我显示这些错误:

  

&#34;严重性代码说明项目文件行   错误C2440&#39;初始化&#39;:无法转换为&#39; char&#39;至   &#39;的std :: basic_string的,性病::分配器&GT;&#39; OpencvTest e:\编程   c \显示图像\ opencvtest \ source.cpp 12&#34;

和:

  

&#34;严重性代码说明项目文件行错误(活动)否   存在合适的构造函数来转换为&#34; char&#34;至   &#34;的std :: basic_string的,   的std ::分配器&GT;&#34; OpencvTest e:\ programming C \显示一个   image \ OpencvTest \ Source.cpp 12&#34;

任何人都可以帮我解决这个错误吗?

1 个答案:

答案 0 :(得分:1)

轻微错误:

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_functionhttp://en.cppreference.com/w/cpp/string/basic_string/basic_string以供参考。

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

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

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