我试图找出2张图像中的差异。场景:假设我有2张图片,一张背景和另一张背景前面的人物,我想以这样一种方式减去两张图片,以获得人物的位置,即该程序是否可以检测到该人站在哪里,并将减去的图像作为输出。OpenCV图像处理
我设法得到的代码是从相机拍摄两张图像并重新调整大小,并将两张图像转换为灰度。在此之后我想知道该怎么做。我检查了OpenCV提供的减法函数,但它将数组作为输入,所以我不知道如何进展。
我写的代码是:
cap>>frame; //gets the first image
cv::cvtColor(frame,frame,CV_RGB2GRAY); //converts it to gray scale
cv::resize(frame,frame,Size(30,30)); //re-sizes it
cap>>frame2;//gets the second image
cv::cvtColor(frame2,frame2,CV_RGB2GRAY); //converts it to gray scale
cv::resize(frame2,frame2,Size(30,30)); //re-sizes it
现在我简单地使用像减函数:
cv::subtract(frame_gray,frame,frame);
还是我先办理一些过滤器,然后用减函数?
_“它需要数组作为输入,所以我不知道如何进步”_图像的内容不过是一个字节数组,对吗?无论如何,你真的尝试过用'cv :: subtract'做什么吗? – Rook 2012-07-10 10:27:20
不,当我看到文档时,我只是在代码中添加了减法语句作为注释。在减去图像之前,我不需要任何滤镜来处理图像?我是否需要将图像加载到内存中才减去它们?我在某处读过,不知道我是否有必要。 – 2012-07-10 10:32:26
你也许应该搜索关于opencv图像或背景减法的更多信息。例如,一个非常快速的搜索引起[相关的stackoverflow问题](http://stackoverflow.com/questions/9742591/opencv-issue-of-image-subtraction)。看看它是如何在其他地方完成的,并询问是否卡住,而不是在尝试任何事情之前求助于;-) – Rook 2012-07-10 10:39:28