Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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中使用cv::imwrite时出现运行时错误_C++_Opencv - Fatal编程技术网

C++ 在OpenCV中使用cv::imwrite时出现运行时错误

C++ 在OpenCV中使用cv::imwrite时出现运行时错误,c++,opencv,C++,Opencv,我正在使用OpenCV 2.3.1。我的语言是C++。 如果我像这样硬编码输出文件的名称,那么imwrite工作得很好 cv::imwrite("/home/peter/BlendedInterpolatedPlane.jpg", srcnorm); cv::imwrite(outputFileName.c_str(), srcnorm); 但是,当我尝试将输出文件名作为如下字符串传递时,会出现运行时错误 cv::imwrite("/home/peter/BlendedInterpolate

我正在使用OpenCV 2.3.1。我的语言是C++。 如果我像这样硬编码输出文件的名称,那么imwrite工作得很好

cv::imwrite("/home/peter/BlendedInterpolatedPlane.jpg", srcnorm);
cv::imwrite(outputFileName.c_str(), srcnorm);
但是,当我尝试将输出文件名作为如下字符串传递时,会出现运行时错误

cv::imwrite("/home/peter/BlendedInterpolatedPlane.jpg", srcnorm);
cv::imwrite(outputFileName.c_str(), srcnorm);
还是像这样

cv::imwrite(outputFileName, srcnorm);
虽然没有编译器错误

outputFileName声明为std::string并包含输出文件名

堆栈跟踪如下所示

org.netbeans.modules.viewmodel.TreeModelNode@1999add[Name=, displayName=__kernel_vsyscall()]    
org.netbeans.modules.viewmodel.TreeModelNode@186304c[Name=, displayName=raise()]    
org.netbeans.modules.viewmodel.TreeModelNode@cce801[Name=, displayName=abort()] 
org.netbeans.modules.viewmodel.TreeModelNode@93b1a8[Name=, displayName=__gnu_cxx::__verbose_terminate_handler()()]  
org.netbeans.modules.viewmodel.TreeModelNode@749412[Name=, displayName=Address: [@0x00554fa5]]  
org.netbeans.modules.viewmodel.TreeModelNode@1a52b00[Name=, displayName=std::terminate()()] 
org.netbeans.modules.viewmodel.TreeModelNode@aa277d[Name=, displayName=__cxa_throw()]   
org.netbeans.modules.viewmodel.TreeModelNode@106904c[Name=, displayName=cv::error(cv::Exception const&)()]  
org.netbeans.modules.viewmodel.TreeModelNode@1eb6f21[Name=, displayName=cv::imwrite_(std::basic_string<char, std::char_traits<char>,   std::allocator<char> > const&, cv::Mat const&, std::vector<int, std::allocator<int> > const&, bool)()]   
org.netbeans.modules.viewmodel.TreeModelNode@1ccf1f3[Name=, displayName=cv::imwrite(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)()]    
org.netbeans.modules.viewmodel.TreeModelNode@20a41d[Name=, displayName=main(argc=9,argv=0xbffff564) at main.cpp:259]
org.netbeans.modules.viewmodel。TreeModelNode@1999add[Name=,displayName=\uuuu kernel\u vsyscall()]
org.netbeans.modules.viewmodel。TreeModelNode@186304c[Name=,displayName=raise()]
org.netbeans.modules.viewmodel。TreeModelNode@cce801[名称=,显示名称=中止()]
org.netbeans.modules.viewmodel。TreeModelNode@93b1a8[Name=,displayName=\uuuu gnu\ucxx::\uu verbose\u terminate\u handler()]
org.netbeans.modules.viewmodel。TreeModelNode@749412[名称=,显示名称=地址:[@0x00554fa5]]
org.netbeans.modules.viewmodel。TreeModelNode@1a52b00[Name=,displayName=std::terminate()()]
org.netbeans.modules.viewmodel。TreeModelNode@aa277d[Name=,displayName=\uuucxa\uthrow()]
org.netbeans.modules.viewmodel。TreeModelNode@106904c[Name=,displayName=cv::error(cv::Exception const&)()]
org.netbeans.modules.viewmodel。TreeModelNode@1eb6f21[Name=,displayName=cv::imwrite(std::basic(string const&,cv::Mat const&,std::vector const&,bool)()]
org.netbeans.modules.viewmodel。TreeModelNode@1ccf1f3[Name=,displayName=cv::imwrite(std::basic_string const&,cv:_inputarrayconst&,std::vector const&)()]
org.netbeans.modules.viewmodel。TreeModelNode@20a41d[Name=,displayName=main(argc=9,argv=0xbfff564)位于main.cpp:259]
非常感谢您的帮助,

彼得我发现了这个问题。输出文件名的后缀无效。一旦我解决了这个问题,它就可以正常工作了

cv::imwrite(outputFileName, srcnorm);
其中outputFileName的类型为std::string