c# - Mat ForEachAsByte 每次运行后都有不同的像素数
问题描述
我有一个 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 左右。
解决方案
推荐阅读
- pytorch - Problems setting up FastAi working on Colab
- ios - UIAlertController freezes the UI when presented after pausing the layer animation
- javascript - 如何在本地存储中的每次点击中设置记录并获取所有这些记录列表?
- android - set contentDescription for tabLyaout
- php - How to fix error:1408F10B:SSL routines:ssl3_get_record:wrong version number in guzzle 6 and laravel 5.7
- php - How can I upload all contenst of a folder including folders and files inside of a folder?
- reactjs - use same function for different buttons
- sql-server - Procedure Regist_Update Subquery returned more than 1 value
- go - ParseFile error when generating Swagger docs
- unity-container - 将 Unity 升级到 5.11