繁体   English   中英

如何在使用OpenCV / C ++进行拼接之前检测图像位置

[英]How to detect image location before stitching with OpenCV / C++

我正在尝试将2张图像合并/拼接在一起,但是发现OpenCV中的默认拼接器类无法处理我的图像。 因此,我开始编写自己的图像。.不幸的是,图像太大而无法附加到此消息上(它们的大小均为12600x9000像素)..因此,我将尽力解释尽可能的好。

这2张图像不是相机拍摄的照片,而是从PDF文件提取的tiff文件。 图像本身实际上是CAD工程图,因此其中没有太多的渐变,因此我认为默认的订书机类无法处理它们。

到目前为止,我设法提取了特征并进行了匹配。 我还使用以下众所周知的示例将它们缝合在一起:

Mat WarpedImage;
cv::warpPerspective(img_2,WarpedImage,homography,cv::Size(2*img_2.cols,2*img_2.rows));
Mat half(WarpedImage,Rect(0,0,img_1.cols,img_1.rows));
img_1.copyTo(half);

我有点适合它..因为我的问题是在我的情况下,这两个图像可以垂直或水平对齐。 默认情况下,Internet上的所有针迹示例均假定第一幅图像为左图像,第二幅图像为右图像。

因此,我的第一个问题是:如何检测图像是在第一幅图像的左侧,右侧,上方还是下方,并创建适当大小的新图像?

其次..目前,我正在获得正确的图像..但是,由于我没有一些不错的代码来检查新图像的理想宽度和高度,因此新图像中有很多黑色/空白空间。 删除那些黑色区域的最佳C ++代码是什么? (我在网上看到很多Python脚本..但是没有C ++的例子..我有0个Python技能。...)

预先非常感谢您的帮助。 问候,弗洛里斯。

您可以使用perspectiveTransform重新投影第二个图像的角。 使用变换后的点,您可以找到图像的相对位置并计算将适合两个图像的新图像大小。 由于您具有两个图像的边界,因此这也将使您处理黑色区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM