gpt4 book ai didi

opencv - 使用 EmguCV 将图像的一部分复制到另一个图像

转载 作者:行者123 更新时间:2023-12-02 17:45:09 25 4
gpt4 key购买 nike

我想将图像的中心部分(矩形)复制到全白 Mat (到相同的位置)。

代码:

        Mat src = Image.Mat;
Mat dst = new Mat(src.Height, src.Width, DepthType.Cv8U, 3);
dst.SetTo(new Bgr(255, 255, 255).MCvScalar);

Rectangle roi = new Rectangle((int)(0.1 * src.Width), (int)(0.1 * src.Height), (int)(0.8 * src.Width), (int)(0.8 * src.Height));

Mat srcROI = new Mat(src, roi);

Mat dstROI = new Mat(dst, roi);

srcROI.CopyTo(dstROI);

//I have dstROI filled well. CopyTo method is doing well.
//However I have no changes in my dst file.

但是结果我只得到白色图像 - dst .里面什么都没有。

我做错了什么?

使用 EmguCV 3.1

编辑

我有一个 dstROI垫子填得很好。但是如何将更改应用到原始 dst 存在问题现在垫。

更改 CopyTo像这样:
  srcROI.CopyTo(dst);

导致 dst 现在充满了我的 src 图像部分,但不像我想要的那样在中心

编辑 2
 src.Depth = Cv8U

正如你所建议的,我检查了 IsSubmatrix 的值属性(property)。
   Console.WriteLine(dstROI.IsSubmatrix);         
srcROI.CopyTo(dstROI);
Console.WriteLine(dstROI.IsSubmatrix);

给出输出:
   true
false

那有什么问题呢?

最佳答案

古老的问题,我知道,但是当我搜索时它出现了,所以这里的答案可能仍然会在搜索中被击中。我有一个类似的问题,它可能是同样的问题。如果 srcdst有不同数量的 channel 或不同的深度,那么一个新的Mat而是创建。我看到它们都具有相同的深度,但在我的情况下,我有一个 channel 进入 3 channel Mat .如果您的 src不是3 channel Mat ,那么这可能是问题所在(例如,可能是 1(灰色)或 4 channel (BGRA))。

关于opencv - 使用 EmguCV 将图像的一部分复制到另一个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335774/

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