【发布时间】:2021-12-17 04:10:01
【问题描述】:
下面是我的代码:
private double GetImageValue(Bitmap Image)
{
double ImageValue = 0;
for (int X = 0; X < Image.Width; X++)
{
for (int Y = 0; Y < Image.Height; Y++)
{
Color CurrentPixel = Image.GetPixel(X, Y);
ImageValue += CurrentPixel.A + CurrentPixel.B + CurrentPixel.G + CurrentPixel.R;
}
}
return ImageValue;
}
代码返回图像中每个像素的总值。有没有办法加快这个过程?
【问题讨论】:
-
并行化双 for 循环
-
尝试使用
LockBits并一次性读取整个数组 -
@Charlieface 请您提供使用 lockbits 的代码,而不是代码当前正在执行的操作。
-
多线程 (OpenMP?) 将域切成宽的水平条纹,分布在内核之间。 -- 确保编译器产生 SSE/AVX/... 向量指令
-
@ChristophRackwitz 请您提供多线程代码。谢谢。
标签: c# image-processing