把一个较大的图像内的较小图像。(Putting a smaller image within a l

2019-10-29 04:52发布

我需要把一个较大的图像中较小的图像。 较小的图像应在照片放大居中。 我用C#和OpenCV的工作,没有人知道如何做到这一点?

Answer 1:

有一个有用的岗位上水印的图像,可能会帮助你。 我想这是非常接近相同的过程,你在做什么。

此外,一定要检查这篇文章在CodeProject使用GDI +的另一个例子。



Answer 2:

检查这个职位 。 同样的问题,同样的解决方案。 代码是C ++,但你可以做出来。



Answer 3:

这个工作对我来说

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

当然EmguCV



Answer 4:

以上答案是伟大的! 下面是添加水印的右下角有一个完整的方法。

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;
    }


文章来源: Putting a smaller image within a larger image.
标签: c# opencv emgucv