2017-05-23 10 views

답변

2

나는 그것을 알아 냈다. 매트를 자르려면, 당신은 버퍼로 이미지 객체를 사용하고 .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; 

} 
-1

아메드 , 작동하지 않는 것은 무엇입니까? 데이터가있는 매트를 가져 오지 않습니까? "프레임"이란 "프레임"이란 무엇입니까? ROI가 우연히 RotatedRect입니까? 작동하지 않을 RotatedRect를 사용하고 있다면 당신이 옳기 때문입니다. 프레임이 매트 인 경우 작업을 잘 수행해야합니다. 작동하지 않는 것에 대한 세부 정보가 필요합니다.

+0

구문 오류 일 뿐이므로 C#에서 프레임을 자르는 올바른 방법을 찾았습니다. – Ahmed

+0

구문 오류가 발생했습니다. – AeroClassics

2

아메드을, 당신은 정말 그냥 매트를 만들> 이미지 <을 만들 필요가 없습니다. 다음보십시오 : 당신이 RotatedRect을 가지고 있지 않기 때문에

Mat myNewMat = new Mat(input, crop_region); 

당신이 똑바로 사각형으로 회전 된 사각형을 번역 할 필요가 없습니다. 따라서 기존 매트와 사각형에서 새로운 매트를 만들 수 있습니다.

이렇게하면 코드가 간단해질 수 있습니다.

더그