0

是否可以使用 OpenCv (JavaCv) 将图像放置在图像中。例如,我有一个 1000x1000 的图像和一个 100x100 的图像。在 600x600 位置,我想将较小的图像放在较大的图像中。

假设蓝色框是 1000x1000 IplImage,红色框是 100x100 IplImage。能不能把红盒子放在蓝盒子里。最好是计算效率很高,因为它必须实时工作。

在此处输入图像描述

提前谢谢

4

1 回答 1

4

这是在 Python 中,但转换为 Java 将非常容易。使用GetSubRect()Copy()GetSubRect()返回一个感兴趣的矩形子数组(指定左上角的兴趣点,以及宽度和高度)。然后只需使用 . 复制图像即可Copy()

import cv
blue = cv.LoadImage("blue.jpg")
red = cv.LoadImage("red.jpg")

sub = cv.GetSubRect(blue, (100, 100, 50, 50))
cv.Copy(red,sub)

cv.ShowImage('blue_red', blue)
cv.WaitKey(0)

或者,正如 karlphillip 建议的那样,您可以使用 指定“感兴趣的区域” SetImageROI(),并做同样的事情:

cv.SetImageROI(blue,(100,100,50,50))
cv.Copy(red, blue)
cv.ResetImageROI(blue)

重置 ROI 非常重要ResetImageROI,否则您将只显示/保存 ROI,而不是整个图像。

演示输出:

蓝色:在此处输入图像描述红色:在此处输入图像描述组合:在此处输入图像描述

于 2012-04-07T15:45:19.247 回答