OpenCv(JavaCv)を使用して画像内に画像を配置することは可能ですか?たとえば、1000x1000の画像と100x100の画像があります。そして、600x600の位置で、小さい画像を大きい画像の中に配置したいと思います。
青いボックスが1000x1000IplImageで、赤いボックスが100x100IplImageであるとします。赤いボックスを青いボックスに入れることは可能ですか。リアルタイムで動作する必要があるため、計算はかなり効率的であることが望ましい。
事前にThx
これは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のみを表示/保存します。
デモ出力:
青:赤:組み合わせ: