使用opencv将旋转和倾斜的图像插入到另一个图像中检测到的矩形中?

时间:2014-03-26 13:48:08

标签: c++ opencv opengl

我在一个图像中检测到一个矩形,可能是变形或有角度,现在我已经旋转并倾斜第二个图像以插入第一个图像中检测到的矩形。我这样做的最佳方式是什么?我需要使用opengl吗?

1 个答案:

答案 0 :(得分:0)

如果要插入的图像是真正的矩形且裁剪得很好,则只能使用getPerspectiveTransformwarpPerspective的组合来使用OpenCV执行此操作。

// First estimate the perspective transform to be applied
cv::Mat srcCorners; // Rectangle corners in your second image (image to be inserted)
cv::Mat dstCorners; // Rectangle corners in your first image (image with detected rectangle)
cv::Mat H = cv::getPerspectiveTransform(srcCorners,dstCorners);
// Copy original image and insert new image
cv::Mat composite;
secondImage.copyTo(composite);
cv::warpPerspective(firstImage,composite,H,composite.size(),cv::INTER_CUBIC,cv::BORDER_TRANSPARENT);

如果要插入的图像不是真正的矩形,例如信用卡,则需要使用Alpha通道,这可能需要重新编码warpPerspective(不那么难)。