是否可以使用 OpenCv (JavaCv) 将图像放置在图像中。例如,我有一个 1000x1000 的图像和一个 100x100 的图像。在 600x600 位置,我想将较小的图像放在较大的图像中。
假设蓝色框是 1000x1000 IplImage,红色框是 100x100 IplImage。能不能把红盒子放在蓝盒子里。最好是计算效率很高,因为它必须实时工作。
提前谢谢
这是在 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,而不是整个图像。
演示输出:
蓝色:红色:
组合: