背景减法 c# emgucv
Background Substraction c# emgucv
我从 emguCV 开始我的冒险。我想写一个简单的算法来检测移动物体。我尝试减去背景,但图像全黑。
public Form1()
{
previous = grabber.QueryFrame();
Application.Idle += new EventHandler(FrameGrabber27);
}
void FrameGrabber27(object sender, EventArgs e)
{
Image<Bgr, Byte> output = new Image<Bgr,Byte>(300,300);
Image<Bgr, Byte> actual = grabber.QueryFrame();
int width = output.Width;
int height = output.Height;
image27.Image = grabber.QueryFrame();
ibProcessed.Image = actual;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
if ((actual[j, i].Blue == previous[j, i].Blue) && ( actual[j, i].Red == previous[j, i].Red)&&(actual[j, i].Green == previous[j, i].Green))
{
output[j, i] =newBgr(0,0,0);
}
else
{
output[j, i] = new Bgr(255, 255, 255);
}
}
}
im.Image = output;
- 为什么输出图片的大小设置为300*300而不是actual.width*actual.height?
output[j, i] =newBgr(0,0,0);
希望你在项目中没有忘记 space?
((actual[j, i].Blue == previous[j, i].Blue) && ( actual[j, i].Red == previous[j, i].Red)&&(actual[j, i].Green == previous[j, i].Green))
这将 return 几乎总是正确的,因为即使网络摄像头和场景是静态的,两帧之间的每个像素的颜色总会有非常细微的变化。
- OpenCV 提供了 2 个背景扣除函数:Here it is
我从 emguCV 开始我的冒险。我想写一个简单的算法来检测移动物体。我尝试减去背景,但图像全黑。
public Form1()
{
previous = grabber.QueryFrame();
Application.Idle += new EventHandler(FrameGrabber27);
}
void FrameGrabber27(object sender, EventArgs e)
{
Image<Bgr, Byte> output = new Image<Bgr,Byte>(300,300);
Image<Bgr, Byte> actual = grabber.QueryFrame();
int width = output.Width;
int height = output.Height;
image27.Image = grabber.QueryFrame();
ibProcessed.Image = actual;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
if ((actual[j, i].Blue == previous[j, i].Blue) && ( actual[j, i].Red == previous[j, i].Red)&&(actual[j, i].Green == previous[j, i].Green))
{
output[j, i] =newBgr(0,0,0);
}
else
{
output[j, i] = new Bgr(255, 255, 255);
}
}
}
im.Image = output;
- 为什么输出图片的大小设置为300*300而不是actual.width*actual.height?
output[j, i] =newBgr(0,0,0);
希望你在项目中没有忘记 space?((actual[j, i].Blue == previous[j, i].Blue) && ( actual[j, i].Red == previous[j, i].Red)&&(actual[j, i].Green == previous[j, i].Green))
这将 return 几乎总是正确的,因为即使网络摄像头和场景是静态的,两帧之间的每个像素的颜色总会有非常细微的变化。- OpenCV 提供了 2 个背景扣除函数:Here it is