首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >误水深(OpenCvSharp)

误水深(OpenCvSharp)
EN

Stack Overflow用户
提问于 2019-12-05 14:31:54
回答 1查看 546关注 0票数 0

我试图创建一个视差图像从两个立体声图像使用OpenCvSharp

到目前为止,这是我的代码:

代码语言:javascript
复制
      Mat left = new Mat(fileName1, ImreadModes.IgnoreOrientation);
      Mat right = new Mat(fileName2, ImreadModes.IgnoreOrientation);
      Mat output = new Mat();

      right = right.Resize(left.Size());

      MessageBox.Show($"Type left: {left.Type()}, type right: {right.Type()}");

      StereoBM bm = StereoBM.Create(16, 15);
      OutputArray outArr = OutputArray.Create(output);
      bm.Compute((InputArray) left, (InputArray) right, outArr);
      Cv2.ImShow("output", outArr.GetMat());

我正在显示带有mat类型的消息框,因为我过去经常得到以下错误:

“两个输入图像都必须有CV_8UC1”

我更改了ImreadMode,直到它起作用为止,而IgnoreOrientation因某种原因而起作用。

现在我得到了这个错误:

“>输入图像的不支持深度: 第五章:包含(深度) 哪里 再评估“深度”为3 (CV_16S) “

最后一行。

那么什么深度会被接受,如何相应地设置输出的深度

(我在OpenCv上有大约4个小时的工作经验,很抱歉,如果这个问题是微不足道的,我在google上没有发现任何关于这个问题的信息)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-12 14:17:41

这样啊,原来是这么回事。

代码语言:javascript
复制
StereoBM bm = StereoBM.Create(16, 13);
OutputArray outArr = OutputArray.Create(output);
bm.Compute((InputArray) left, (InputArray) right, outArr);
outArr.GetMat().ConvertTo(output, MatType.CV_8UC1);   //   <--- key line
Cv2.ImShow("output", output);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59197401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档