【问题标题】:(EMGU) How do I split and merge an Image?(EMGU) 如何拆分和合并图像?
【发布时间】:2017-08-17 19:03:47
【问题描述】:

我正在使用 Emgu 在 Visual Studio 上使用 C#。

我正在对一张大图像进行几次图像处理。我的想法是将图像分成两半,并行进行操作,然后合并图像。

为了实现这一目标,我发现了许多关于获取图像的矩形部分进行处理以及将图像分割成通道(RGB、HSV 等)的问题。我还没有找到解决拍摄图像并将其制作成两个图像的任务的问题。我也没有找到解决拍摄两张图像并将它们拼接在一起的问题。

下面的代码是我想做的,其中拆分和合并是实现它的想象方法。

Image<Bgr,Byte> ogImage = new Image<Bgr, byte>(request.image);
Image<Bgr,Byte> topHalf = new Image<Bgr, byte>();
Image<Bgr,Byte> bottomHalf = new Image<Bgr, byte>();

ogImage.splitHorizonally(topHalf,bottomHalf);

//operations

ogImage = topHalf.merge(bottomHalf);

这是我讨厌问的问题类型,因为它很简单,你会认为它有一个简单、容易获得的解决方案,但我没有找到它,或者我找到了它但不理解它。

【问题讨论】:

  • 要将图像分成两半,创建两个新图像,每个图像的大小都是原图像的一半,然后将原图像的每一半绘制到每个新图像上。要合并,请在原始图像的正确位置绘制 2 个较小的图像。
  • @0liveradam8 你介意我问你所说的平局是什么意思吗?是命令吗?或者你的意思是做一个像素到像素的绘制
  • 我对 emgu 不熟悉,所以我不知道你有什么可用的命令;我使用了 System.Drawing.Graphics,您可以完全按照我对命令的描述进行操作。我只是想描述一些你可以采取的合理步骤来尝试实现这一目标。
  • @0liveradam8 我希望避免以这种方式写作,但似乎这是不可避免的。谢谢!

标签: c# image-processing merge split emgucv


【解决方案1】:

有很多方法可以解决这个问题,但这就是我所做的。我采取了最简单的方法;-)

    Mat lena = new Mat(@"D:\OpenCV\opencv-3.2.0\samples\data\Lena.jpg", 
                       ImreadModes.Unchanged);

    CvInvoke.Imshow("Lena", lena);

    System.Drawing.Rectangle topRect = new Rectangle(0, 
                                                     0, 
                                                     lena.Width,
                                                     (lena.Height / 2));

    System.Drawing.Rectangle bottomRect = new Rectangle(0, 
                                                        (lena.Width / 2),
                                                        lena.Width,
                                                        (lena.Height / 2));

    Mat lenaTop = new Mat(lena, topRect);

    CvInvoke.Imshow("Lena Top", lenaTop);

    Mat lenaBottom = new Mat(lena, bottomRect);

    CvInvoke.Imshow("Lena Bottom", lenaBottom);

    Mat newLena = new Mat();

    CvInvoke.VConcat(lenaBottom, lenaTop, newLena);

    CvInvoke.Imshow("New Lena", newLena);

    CvInvoke.WaitKey(0);

原版莉娜

莉娜上半场

莉娜下半场

重新安排的新莉娜

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 2011-10-26
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2013-04-19
    • 2017-12-21
    • 2014-01-26
    相关资源
    最近更新 更多