OpenCV:如何将两个静态图像合并为一个并在其上压印文本?

OpenCV:如何将两个静态图像合并为一个并在其上压印文本?,c,opencv,C,Opencv,我已经完成了一个图像处理算法,从两个相似的图像中提取某些特征 我正在使用OpenCV2.1,我希望展示这两个相似图像之间的比较。我希望将两个图像合并为一个,最终的图像将两个图像相邻。如下图所示。 此外,黑点是我的算法发现的相似之处,现在我想用数字标记它们。其中,右侧的点1为左侧对应的匹配点** 什么OpenCV函数对这项工作有用?我现在能想到的最简单的方法是创建两个窗口,而不是一个。您可以使用cvNamedWindow执行此操作,然后使用cvMoveWindow将它们并排放置 之后,如果你现在

我已经完成了一个图像处理算法,从两个相似的图像中提取某些特征

我正在使用OpenCV2.1,我希望展示这两个相似图像之间的比较。我希望将两个图像合并为一个,最终的图像将两个图像相邻。如下图所示。

此外,黑点是我的算法发现的相似之处,现在我想用数字标记它们。其中,右侧的点1为左侧对应的匹配点**


什么OpenCV函数对这项工作有用?

我现在能想到的最简单的方法是创建两个窗口,而不是一个。您可以使用cvNamedWindow执行此操作,然后使用cvMoveWindow将它们并排放置


之后,如果你现在知道了图像上相似性的位置,你可以在它们附近画出你的文字。看看cvInitFont,cvPutText.

如果你真的想让它们在同一个窗口中,假设它们有相同的宽度和高度,如果它们相似,它们应该有相同的宽度和高度。您可以尝试创建一个最终宽度比两个类似图像的宽度大两倍的图像。然后使用ROI复制它们。 您可以编写一个新函数,将这些有用的函数封装在一个函数中,以获得一个漂亮的代码

Mat img1,img2; //They are previously declared and of the same width & height

Mat imgResult(img1.rows,2*img1.cols,img1.type()); // Your final image

Mat roiImgResult_Left = imgResult(Rect(0,0,img1.cols,img1.rows)); //Img1 will be on the left part
Mat roiImgResult_Right = imgResult(Rect(img1.cols,0,img2.cols,img2.rows)); //Img2 will be on the right part, we shift the roi of img1.cols on the right

Mat roiImg1 = img1(Rect(0,0,img1.cols,img1.rows));
Mat roiImg2 = img2(Rect(0,0,img2.cols,img2.rows));

roiImg1.copyTo(roiImgResult_Left); //Img1 will be on the left of imgResult
roiImg2.copyTo(roiImgResult_Right); //Img2 will be on the right of imgResult

朱利安,

亲爱的卡尔菲利普,你能看看我的另一个问题吗。我可以补充到这篇文章,如果你想写一个覆盖,你可以使用putText函数…谢谢!但是有几个语法错误:第二行需要img1.type而不是img1.type,第4行和第5行各需要一个结尾。但它是有效的,谢谢: