错误“my.exe中出现未处理的类型'System.AccessViolationException'异常”当试图加载图像时

时间:2013-07-09 08:56:42

标签: c++ windows forms opencv

我使用Visual C ++ 2008来使用opencv 2.3.1来操作图像。我尝试使用Windows窗体加载图像。 以下是我的form1.h

中的源代码
#pragma endregion
std::string MarshalString (System::String ^ s) {
             using namespace System::Runtime::InteropServices;
             const char* chars = (const char*) (Marshal::StringToHGlobalAnsi(s)).ToPointer();
             std::string os = chars;
             Marshal::FreeHGlobal(System::IntPtr((void*)chars));
             return os;
        }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) { 
     if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) {
     Picture = cv::imread(MarshalString(openFileDialog1->FileName),CV_LOAD_IMAGE_COLOR);
     pictureBox1->Image = IplImageToBitmap(&(IplImage) Picture);
 }

编译完成后,程序中没有问题,但是在openFileDialog中选择一个图像,并且klik ok,并在图片框中加载图像后,就会出现此错误。

An unhandled exception of type 'System.AccessViolationException' occurred in my.exe

警告框中有两个选项,Break或Continue。当我单击break时,VB指向此行的绿色箭头,

Picture = cv::imread(MarshalString(openFileDialog1->FileName),CV_LOAD_IMAGE_COLOR);

我猜有一个与Picture变量有关的问题。但是,我无法找到解决方案。谁能帮我?

谢谢。

0 个答案:

没有答案