|
我想在Emgucv中修改位图的像素,但是遇到了以下问题:
//1,首先读入一位图:
Bitmap timage = new Bitmap(path);
//2,以下是对位图timage的处理:
// 省略
//3,考虑到(1)Emgucv用Intptr代替了IplImage
// (2) 并且用CvInvoke.cvShowImage(1p,2p)显示图像,2p的类型是Intptr
// 于是有如下代码:
IntPtr hBitmap = timage.GetHbitmap();//似乎只有GetHbitmap()能得到Intptr类型的bitmap地址~
CvInvoke.cvNamedWindow(path);
CvInvoke.cvShowImage(path, hBitmap);//4,就走到这里报错!
CvInvoke.cvWaitKey(0);
编译后,通过。
程序运行到1,ok;2,ok;3里的4不ok!
报错如下:
未处理 System.AccessViolationException
Message="尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
Source="Emgu.CV"
....
此时:
标有“path”的窗体(CvInvoke.cvShowImage(path, hBitmap))只出现了1秒左右的时间...
还望各位大牛救命~小生有礼了~ |
|