【发布时间】:2017-12-01 19:28:25
【问题描述】:
这里对 EmguCV 有点新意
只想问个简单的问题,关于CopyMakeBorder函数
目标图像的像素值是否可访问?
我想进一步处理目标图像,但是当我尝试访问图像中的像素值时,它只返回 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)
【问题讨论】: