我使用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变量有关的问题。但是,我无法找到解决方案。谁能帮我?
谢谢。