2015年7月7日 星期二

Emgu 把二個影像合成一個影像

第一步 首先建立一個夠大的 image 底圖. 這行程式碼是依照OCR的ROI大小建立的。

 Image combine_image = new Image(new Size(roi_window.getWidth(), roi_window.getHeight())); 

第二步 然後在這個底圖上建立一個ROI的區域,這個目是要讓需要組合的畫面能放在正確的位置上。

 combine_image.ROI = new Rectangle(0+x_shift, 0, _processDigit_array[i].Width, _processDigit_array[i].Height); 


 第三步,將要組合的畫面放在底圖上
 _processDigit_array[i].CopyTo(combine_image); 

 第四步,移動ROI的位置,再將第二張畫面放在底圖上

 x_shift = x_shift + _processDigit_array[i].Width;


 第五步,將ROI的大小設為零,這個步驟等於是取消底圖上的ROI,
這檥才能讓底圖正常顯示在 imagebox 上。
 combine_image.ROI = new Rectangle(0, 0, 0, 0);


 程式碼片段

 Image< Gray, Byte> combine_image = new Image< Gray, byte>( new Size(roi_window.getWidth(), roi_window.getHeight()));
int x_shift = 0;
for ( int i = 0; i < _processDigit_array.Count; i++)
{
    combine_image.ROI = new Rectangle(0+x_shift, 0, _processDigit_array[i].Width, _processDigit_array[i].Height);
    _processDigit_array[i].CopyTo(combine_image);
    x_shift = x_shift + _processDigit_array[i].Width;
}
combine_image.ROI = new Rectangle(0, 0, 0, 0);

imageBox_after_threshold.Image = combine_image;

沒有留言: