【发布时间】:2017-05-23 14:04:48
【问题描述】:
我发现推荐使用的一些答案:
frame = ...
Rectangle ROI = ...
Mat crop = new Mat(frame, ROI)
但这似乎不适用于 Emgu 3.x
【问题讨论】:
我发现推荐使用的一些答案:
frame = ...
Rectangle ROI = ...
Mat crop = new Mat(frame, ROI)
但这似乎不适用于 Emgu 3.x
【问题讨论】:
Ahmed,你真的不必为了创建一个 Mat 而创建一个 Image。请尝试以下操作:
Mat myNewMat = new Mat(input, crop_region);
由于您没有 RotatedRect,因此您不必将旋转的矩形转换为直立的矩形。因此,您可以从现有的 Mat 和矩形创建一个新的 Mat。
这应该可以工作并且可以简化你的代码。
道格
【讨论】:
我想通了。要裁剪 Mat,您必须使用 Image 对象作为缓冲区并使用其 .ROI 属性:
Mat crop_color_frame(Mat input, Rectangle crop_region)
{
/*
* TODO(Ahmed): Figure out why I had to copy this into this class.
* */
Image<Bgr, Byte> buffer_im = input.ToImage<Bgr, Byte>();
buffer_im.ROI = crop_region;
Image<Bgr, Byte> cropped_im = buffer_im.Copy();
return cropped_im.Mat;
}
【讨论】:
艾哈迈德,什么不起作用?你没有得到一个带有数据的垫子吗?什么是“框架”是“框架”一个垫子?您的投资回报率是 RotatedRect 吗?因为如果您使用的 RotatedRect 不起作用,那么您是对的。如果框架是垫子,那么您正在做的事情应该可以正常工作。需要一些关于不工作的细节。
【讨论】: