【发布时间】:2012-07-23 14:37:02
【问题描述】:
我有一个用 C++ 构建的 DLL,并将返回 Mat 对象。 那个图片信息是384*384*24色。
C#代码
Bitmap a = new Bitmap(384, 384, 3 * 384, PixelFormat.Format24bppRgb, test1());
pictureBox0.Image = a;
C++ 代码
uchar* DLL_EXPORT test1(void)
{
Mat OriginalImg = imread("c:\\20100812133.jpg", 1 );
return OriginalImg.data;
}
代码没问题,但我想阅读灰色的图片。 我会做一些图像处理(例如:Threshod),并转换为颜色, 并返回 C# 并展示它!
C++ 代码
uchar* DLL_EXPORT test0(void)
{
Mat OriginalImg = imread("c:\\20100812133.jpg", 0 );
threshold(OriginalImg,OriginalImg,0,255,THRESH_OTSU);
cvtColor(OriginalImg,OriginalImg,CV_GRAY2BGR);
return OriginalImg.data;
}
c++代码失败,能帮忙吗?
更新数据 http://ppt.cc/h2SI图片失败,我认为原因是记忆。 我将 c# 代码将第三个参数 3*384 修复为 2*384。 C# 运行正常,但图片像这样中断http://ppt.cc/IRfd
-- 更新数据
Bitmap a = new Bitmap(384, 384, 1 * 384, PixelFormat.Format24bppRgb, test0());
Bitmap a = new Bitmap(384, 384, 2 * 384, PixelFormat.Format24bppRgb, test0());
Bitmap a = new Bitmap(384, 384, 3 * 384, PixelFormat.Format24bppRgb, test0());
Bitmap a = new Bitmap(384, 384, 2 * 384, PixelFormat.Format32bppRgb, test0());
Bitmap a = new Bitmap(384, 384, 3 * 384, PixelFormat.Format32bppRgb, test0());
Bitmap a = new Bitmap(384, 384, 4 * 384, PixelFormat.Format32bppRgb, test0());
我试了六次,跑起来还行,但是画面坏了。
【问题讨论】:
-
什么样的失败?请详细说明。
-
您需要在此处设置不同的图片格式PixelFormat.Format24bppRgb或将您的图片数据转换为该数据类型所描述的格式