我尝试使用Emgu.CV
在C#中使用视差图计算我将此article中的图像读取为bitmapLeft和bitmapRight。作为参考,我使用了here
中的示例代码这是我的源代码:
var id_num = 1;
var picker = null;
$(function () {
$(document).on('click', ".repeat", function (e) {
e.preventDefault();
var $self = $(this);
var $parent = $self.parent();
if($self.hasClass("add-bottom")){
$parent.after($parent.clone(true).attr("id", "repeatable" + id_num));
id_num = id_num + 1;
//picker = null;
} else {
$parent.before($parent.clone(true).attr("id", "repeatable" + id_num));
id_num = id_num + 1;
//picker = null;
}
});
});
但是,生成的位图全黑。
答案 0 :(得分:0)
我认为你的问题就在最后。调用StereoMatcherExtentions.Comput的结果是一个深度为Cv16S的Mat / Image,我将其转换回Cv8U并能够显示它。这是我的例子。我使用了相同的两张图片。
Mat leftImage = new Mat(@"C:\Users\jones_d\Desktop\Disparity\LeftImage.png", ImreadModes.Grayscale);
Mat rightImage = new Mat(@"C:\Users\jones_d\Desktop\Disparity\\RightImage.png", ImreadModes.Grayscale);
CvInvoke.Imshow("Left", leftImage);
CvInvoke.Imshow("Right", rightImage);
Mat imageDisparity = new Mat();
StereoBM stereoBM = new StereoBM(16, 15);
StereoMatcherExtensions.Compute(stereoBM, leftImage, rightImage, imageDisparity);
Mat show = new Mat();
imageDisparity.ConvertTo(show, DepthType.Cv8U);
CvInvoke.Imshow("Disparity", show);
CvInvoke.WaitKey(0);
以下是图片:
的结果相符道格