2012-10-08 83 views
0

我需要在較大的圖像中放置較小的圖像。較小的圖片應以較大的圖片爲中心。我正在使用C#和OpenCV,有誰知道如何做到這一點?在較大的圖像中放置較小的圖像。

+0

您是否在使用Emgu CV? – Krish

+0

克里什沒有。 我正在使用OpenCV和C#。你有什麼想法來幫助我嗎? –

回答

0

檢查this post。同樣的問題,相同的解代碼是用於C++,但你可以解決它。

1

有一個helpful post關於水印圖像,可能會幫助你。我認爲它與你正在做的事情非常接近相同的過程。

此外,請務必在CodeProject上檢查this article,以查看使用GDI +的另一個示例。

0

這個工作對我來說

LargeImage.ROI = SearchArea; // a rectangle 
SmallImage.CopyTo(LargeImage); 
LargeImage.ROI = Rectangle.Empty; 

EmguCV當然

0

的上述答案是偉大的!這是一個將水印添加到右下角的完整方法。

public static Image<Bgr,Byte> drawWaterMark(Image<Bgr, Byte> img, Image<Bgr, Byte> waterMark) 
    { 

     Rectangle rect; 
     //rectangle should have the same ratio as the watermark 
     if (img.Width/img.Height > waterMark.Width/waterMark.Height) 
     { 
      //resize based on width 
      int width = img.Width/10; 
      int height = width * waterMark.Height/waterMark.Width; 
      int left = img.Width - width; 
      int top = img.Height - height; 
      rect = new Rectangle(left, top, width, height); 
     } 
     else 
     { 
      //resize based on height 
      int height = img.Height/10; 
      int width = height * waterMark.Width/waterMark.Height; 
      int left = img.Width - width; 
      int top = img.Height - height; 
      rect = new Rectangle(left, top, width, height); 
     } 

     waterMark = waterMark.Resize(rect.Width, rect.Height, Emgu.CV.CvEnum.INTER.CV_INTER_AREA); 
     img.ROI = rect; 
     Image<Bgr, Byte> withWaterMark = img.Add(waterMark); 
     withWaterMark.CopyTo(img); 
     img.ROI = Rectangle.Empty; 
     return img; 
    } 
相關問題