У меня есть Bitmap bm
, который содержит различные флажки. Мне нужно l oop над каждым местоположением флажка XY и измерить количество черно-белых пикселей для каждого флажка, чтобы определить, было ли отмечено место флажка или нет. В этой строке цвет изменяется на true / false (черный / белый): lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f);
, а результаты сохраняются в списке lResults.
Затем я добавляю количество истинных пикселей (пикселей, которые были отмечены ) и распечатать его на консоли, чтобы проверить, работает ли он. Хотя в настоящее время я получаю сообщение об ошибке:
Bitmap bm = new Bitmap(@"C:\IronPDFDoc\1.png", true);
BitmapData srcData = bm.LockBits(
new Rectangle(0, 0, bm.Width, bm.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
SecondarySchoolCheckboxes b1 = new SecondarySchoolCheckboxes();
foreach (KeyValuePair<string, CheckboxData> element in b1.CheckboxLocations)
{
int startX = element.Value.startX;
int endX = element.Value.endX;
int startY = element.Value.startY;
int endY = element.Value.endY;
List<bool> lResult = new List<bool>();
for (int y = startY; y < endY; y++)
{
for (int x = startX; x < endX; x++)
{
lResult.Add(bm.GetPixel(y, x).GetBrightness() < 0.5f);
}
}
int numMarked = 0;
foreach(bool b in lResult)
{
if(b == true)
{
numMarked++;
}
}
Console.WriteLine($"Box Name: {element.Key}\nNum Squares Marked: {numMarked}\n");
}
Кто-нибудь может понять, почему я получаю ошибку? Я просматривал различные другие подобные сообщения Stackoverflow для этой ошибки, хотя ни одна не решает мою конкретную c проблему