将较小的图像放在较大的图像中。

时间:2012-10-08 18:08:42

标签: c# opencv emgucv

我需要在较大的图像中放置较小的图像。较小的图片应该在较大的图片中居中。我正在使用C#和OpenCV,有谁知道如何做到这一点?

4 个答案:

答案 0 :(得分:1)

水印图片上有helpful post可能对您有帮助。我认为它与你正在做的事情非常接近。

另外,请务必在CodeProject上查看this article以获取使用GDI +的另一个示例。

答案 1 :(得分:0)

检查this post。同样的问题,相同的解决方代码适用于C ++,但您可以解决它。

答案 2 :(得分:0)

这对我有用

LargeImage.ROI = SearchArea; // a rectangle
SmallImage.CopyTo(LargeImage);
LargeImage.ROI = Rectangle.Empty;
当然是 EmguCV

答案 3 :(得分: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;
    }