gpt4 book ai didi

c# - (EMGU) 如何拆分和合并图像?

转载 作者:行者123 更新时间:2023-11-30 23:09:35 61 4
gpt4 key购买 nike

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

我正在对一张大图像进行一些图像处理。我想到了将图像分成两半,并行进行操作,然后合并图像。

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

下面的代码是我想做的,其中 split 和 merge 是实现它的虚构方法。

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

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

最佳答案

有很多方法可以解决这个问题,但我是这样做的。我选择了最简单的方法 ;-)

    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.Height / 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);

莉娜原作

Lena Original

莉娜上半身

Lena Top Half

莉娜下半身

Lena Bottom Half

重新排列的新 Lena

New Lena

关于c# - (EMGU) 如何拆分和合并图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743135/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com