Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ openCV基本\u字符串::\u S\u构造null无效_C++_Opencv_Eclipse Cdt - Fatal编程技术网

C++ openCV基本\u字符串::\u S\u构造null无效

C++ openCV基本\u字符串::\u S\u构造null无效,c++,opencv,eclipse-cdt,C++,Opencv,Eclipse Cdt,我是第一次使用openCV,我遵循了安装指南(对于带有EclipseCDT的linux)并尝试运行示例程序,但我一直收到以下错误消息。 在抛出“std::logic_error”实例后调用terminate what():基本\u字符串::\u S\u构造null无效 #include<cv.h> #include<highgui.h> using namespace cv; int main( int argc, char** argv ){ Mat image;

我是第一次使用openCV,我遵循了安装指南(对于带有EclipseCDT的linux)并尝试运行示例程序,但我一直收到以下错误消息。 在抛出“std::logic_error”实例后调用terminate what():基本\u字符串::\u S\u构造null无效

#include<cv.h>
#include<highgui.h>

using namespace cv;

int main( int argc, char** argv ){
Mat image;
image = imread( argv[1], 1 );

if( argc != 2 || !image.data )
{
    printf( "No image data \n" );
    return -1;
}

namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );

waitKey(0);

return 0;
#包括
#包括
使用名称空间cv;
int main(int argc,字符**argv){
Mat图像;
image=imread(argv[1],1);
if(argc!=2 | |!image.data)
{
printf(“无图像数据”);
返回-1;
}
namedWindow(“显示图像”,CV\u窗口\u自动调整大小);
imshow(“显示图像”,图像);
等待键(0);
返回0;

}

我在最终让OpenCV库链接后遇到了同样的问题。当您尝试读取图像时,可能正在运行可执行文件,但没有参数导致argv[1]为Null。对于我来说,在eclipse上的解决方案是在命令提示符下用一个参数直接调用该文件;“testOpenCV.exe imageFile.png”。很明显,我使用的是windows,但在linux终端中,只要用一个参数调用可执行文件就可以了。

问题是什么?在检查错误案例之前,请使用
argv[1]
2,所以如果我是你,我就开始找了。如果
argc==1
argv[1]
为空。我猜
argv[1]
恰好为空。我正在通过eclipse通过运行配置传递参数argv,@SteveJessop您的意思是在使用argv[1]之前检查argc,我这样做了,但问题相同。@SteveJessop:它没有未指定的值,作为数组中不存在的元素?@LightnessRacesinOrbit:不,不是
argv
以null结尾,并且
argc
不包括null。只说“您的argv[1]为null”就够了