我有一个用 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());
我试了六次,跑步还可以,但是画面坏了。