Я могу получить доступ к каждому пикселю серого изображения, используя Data[,,]
, но не могу сделать это для изображения Bgr.Я написал следующий код:
Image<Bgr, byte> currentFrame = capture.QueryFrame();
Image<Gray, byte> grayFrame = currentFrame.Convert<Gray, byte>();
Byte gray = grayFrame.Data[0, 10, 0];
Byte blue = currentFrame.Data[0, 10, 0];
, который выдает исключение: Object reference not set to an instance of an object.
Я проверил, добавив точку останова, и результат был такой:
currentFrame.Data is nul
grayFrame.Data has 3d array
gray has value 71
и затем следующая строка вызвала ошибку
Почему currentFrame.Data, который должен был быть трехмерным массивом, был нулевым?Как получить доступ к свойству Image.Data для изображения Bgr?
Я использую emgucv 2.2.1.Та же проблема возникла с версией 2.1.
Спасибо за любую помощь
То, что я нашел, довольно удивительно.
Image<Bgr, byte> currentFrame = capture.QueryFrame();
byte b;
try
{
b = image.Data[0, 0, 0]; //Line (A)
}
catch (Exception ex)
{ MessageBox.Show("Before Convert : "+ex.Message); }
image = image.Convert<Bgr, byte>();
try
{
b = image.Data[0, 0, 0]; //Line (B)
}
catch (Exception ex)
{ MessageBox.Show("AfterConvert : "+ex.Message); }
В приведенном выше коде:А) выдает исключение «Рефензия объекта не установлена для экземпляра объекта».Но после добавления кода
image = image.Convert<Bgr, byte>();
Линия (B) проходит без каких-либо исключений.
Кто-нибудь знает, почему это происходит?