从 Emgu CV 中 CopyMakeBorder 函数的目标图像访问像素值
Accessing pixel values from destination image of CopyMakeBorder function in Emgu CV
这里对 EmguCV 有点陌生
只想问一个关于 CopyMakeBorder
函数
的快速问题
目标图像的像素值是否可访问?
我想进一步处理目标图像,但是当我尝试从图像访问像素值时,它只 returns 我 0(即使在不应该为 0 的位置,例如中心像素)。当我使用 Imshow 时,它显示图像边界已得到完美处理,但问题仅在我尝试访问像素值时仍然存在,无论像素位置在哪里都只得到 0。
当我尝试使用来自其他 EmguCV 函数的目标图像时,这不是问题,例如 Threshold
函数
谁能澄清一下?非常感谢!!
我正在使用 VB.net,这是代码(我周末不在工作站,所以我会试着记住代码,可能这里和那里有一些大写字母打错了,但是我希望你明白要点。)
首先我初始化源图像和目标图像
Dim img As Image(Of Gray,Byte) = New Image (Of Gray, Byte)("myimage.jpg")
Dim img1 As Image(Of Gray,Byte) = New Image (Of Gray, Byte)(img.size)
CopyMakeBorder
函数,上下左右扩展1个像素。边框类型常量 0 值
Cvinvoke.CopyMakeBorder(img,img1,1,1,1,1,BorderType.Constant, New MCvscalar(0))
从目标图像访问像素值,以 x = 100、y = 100 和通道 0 中的像素为例(因为它是灰度图像)
Console.writeline(img1.data(100,100,0))
这将使调试输出为 0,无论我尝试在何处获取像素值,它仍然是 0,即使当我尝试显示特定像素不应该为 0 的图像时(它不是黑色)
Cvinvoke.Imshow("test",img1)
您正在尝试通过 Image.Data 访问数据,但是,这不包括添加的边框;只是原始位图。
不过,添加的边框在垫子中 属性。通过它可以访问各个像素
' returns data from original bitmap
Console.WriteLine(img1.Data(100, 100, 0))
' returns data from modified bitmap
Console.WriteLine(img1.Mat.GetData(100, 100)(0))
这里对 EmguCV 有点陌生
只想问一个关于 CopyMakeBorder
函数
目标图像的像素值是否可访问?
我想进一步处理目标图像,但是当我尝试从图像访问像素值时,它只 returns 我 0(即使在不应该为 0 的位置,例如中心像素)。当我使用 Imshow 时,它显示图像边界已得到完美处理,但问题仅在我尝试访问像素值时仍然存在,无论像素位置在哪里都只得到 0。
当我尝试使用来自其他 EmguCV 函数的目标图像时,这不是问题,例如 Threshold
函数
谁能澄清一下?非常感谢!!
我正在使用 VB.net,这是代码(我周末不在工作站,所以我会试着记住代码,可能这里和那里有一些大写字母打错了,但是我希望你明白要点。)
首先我初始化源图像和目标图像
Dim img As Image(Of Gray,Byte) = New Image (Of Gray, Byte)("myimage.jpg")
Dim img1 As Image(Of Gray,Byte) = New Image (Of Gray, Byte)(img.size)
CopyMakeBorder
函数,上下左右扩展1个像素。边框类型常量 0 值
Cvinvoke.CopyMakeBorder(img,img1,1,1,1,1,BorderType.Constant, New MCvscalar(0))
从目标图像访问像素值,以 x = 100、y = 100 和通道 0 中的像素为例(因为它是灰度图像)
Console.writeline(img1.data(100,100,0))
这将使调试输出为 0,无论我尝试在何处获取像素值,它仍然是 0,即使当我尝试显示特定像素不应该为 0 的图像时(它不是黑色)
Cvinvoke.Imshow("test",img1)
您正在尝试通过 Image.Data 访问数据,但是,这不包括添加的边框;只是原始位图。
不过,添加的边框在垫子中 属性。通过它可以访问各个像素
' returns data from original bitmap
Console.WriteLine(img1.Data(100, 100, 0))
' returns data from modified bitmap
Console.WriteLine(img1.Mat.GetData(100, 100)(0))