簡體   English   中英

如何在Emgu中將Mat裁剪為ROI(OpenCV for C#)

[英]How to crop a Mat to ROI in Emgu (OpenCV for C#)

我發現建議使用以下一些答案:

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;

}

艾哈邁德(Ahmed),什么不起作用? 您是否沒有獲得Mat的數據? 什么是“框架”,就是“框架”墊子? 您的投資回報率是RotatedRect嗎? 因為如果您使用的RotatedRect是行不通的,那是對的。 如果frame是Mat,那么您正在做的事情就可以了。 需要一些關於什么不起作用的細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM