我可以使用 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
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>();
最佳答案
[虽然现在回答很晚,但我将其发布以供将来引用。]
最近我遇到了同样的问题。我无法访问 QueryFrame
返回的图像的像素值通过Data
属性(property)。但是在应用任何操作(例如调整大小、转换)后,结果图像是可访问的。这背后的原因和解决方案非常简单。Data
QueryFrame
返回的图像的属性始终为空。它的图像数据存储在非托管内存中,因此无法通过 Data
访问属性(property)。要访问帧的像素值,您只需克隆它。
Image<Bgr, byte> currentFrame = capture.QueryFrame();
Image<Bgr, byte> frame = currentFrame.Clone();
// now access using Data property
byte b = frame.Data[0,0,0];
byte g = frame.Data[0,0,1];
byte r = frame.Data[0,0,2];
关于c# - 无法访问 C# emgucv 中的 Image<Bgr, byte>.Data 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532904/