问题描述
我有一个 Mat 8 位灰度图像,我试图在其中使用 ForEachAsInt16() 函数进行循环。
Mat 图像配置如下:
{Mat [ 642*190*CV_8UC1,IsContinuous=False,IsSubmatrix=True,Ptr=0x75c8cf8,Data=0xcce4481 ]}
此 Mat 是 720*1280*CV_8UC1
的较大图像的子矩阵
当我遍历这个 Mat 并尝试计算像素数时,代码每次都会返回不同数量的像素。有谁知道为什么会这样?
执行此操作的代码如下:
var ridgeImageRoi = new Mat(ridgeImage,new Rect(roi.MinPoint.X,roi.MinPoint.Y,roi.MaxPoint.X - roi.MinPoint.X,roi.MaxPoint.Y - roi.MinPoint.Y));
unsafe
{
int pixelcounter = 0;
ridgeImageRoi.ForEachAsByte((byte* pixel,int* position) =>
{
pixelcounter++;
});
Console.WriteLine(pixelcounter);
}
我期望输出为 642*190 = 121980
但相反,我得到了以下输出:
78791
69079
72792
71272
79689
这个输出每次都不同,但总是在 70000 左右。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)