如何在openCV的matchTemplate()中处理边界像素?
我正在尝试做两幅图像之间的关联(较小的图像与较大的图像)。如何在openCv中进行边界处理如何在openCV的matchTemplate()中处理边界像素?,opencv,Opencv,我正在尝试做两幅图像之间的关联(较小的图像与较大的图像)。如何在openCv中进行边界处理 cv::matchTemplate(webcamImageReceived,templateImage,resultImage,CV_TM_CCORR_NORMED); 模板永远不会跨越图像边界,结果图像的大小会减少模板大小(每个图像侧面的模板大小为一半) 看这里: (请看: /// Create the result matrix int result_cols = img.cols - t
cv::matchTemplate(webcamImageReceived,templateImage,resultImage,CV_TM_CCORR_NORMED);
模板永远不会跨越图像边界,结果图像的大小会减少模板大小(每个图像侧面的模板大小为一半) 看这里: (请看:
/// Create the result matrix
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;
)谢谢,但我以前看过。我的疑问是,当模板图像是给定图像的(0,0)位置时,此时我们是否必须对给定图像进行填充?例如,您在上面发送给我的链接,在标题“how Do work”下的链接中…查看第二个图像,其中模板图像放置在给定图像上,但不完整…在这种情况下,opencv如何管理相关性?第二个图像是源图像的缩放片段(仅用于说明)。在教程中,他们只处理一个图像。但是您可以使用copyMakeborder来控制边界行为。在“它是如何工作的?”一节和“为了识别匹配区域,我们必须通过滑动将模板图像与源图像进行比较:”……他们已将
模板图像
放置在源图像
上,开始滑动。我的问题是,在那个特定场景中…我的cv::matchTemplate()做了什么?…我不想控制边界处理,只想知道matchTemplate()是如何做的?它在源图像上设置ROI(左上角到位置(i,j),宽度和高度等于模板的宽度和高度)。对计算结果使用相关方程(通过标志选择)。将结果放在结果图像的位置(i,j)。增加位置。从一开始就重复。当它到达source.cols-template.cols时,它递增i,当它到达(source.rows-template rows,source.cols-template.cols)时,它完成处理。