1 package org.opencv.core; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 import org.opencv.core.RotatedRect; 7 8 9 10 public class MatOfRotatedRect extends Mat { 11 // 32FC5 12 private static final int _depth = CvType.CV_32F; 13 private static final int _channels = 5; 14 MatOfRotatedRect()15 public MatOfRotatedRect() { 16 super(); 17 } 18 MatOfRotatedRect(long addr)19 protected MatOfRotatedRect(long addr) { 20 super(addr); 21 if( !empty() && checkVector(_channels, _depth) < 0 ) 22 throw new IllegalArgumentException("Incompatible Mat"); 23 //FIXME: do we need release() here? 24 } 25 fromNativeAddr(long addr)26 public static MatOfRotatedRect fromNativeAddr(long addr) { 27 return new MatOfRotatedRect(addr); 28 } 29 MatOfRotatedRect(Mat m)30 public MatOfRotatedRect(Mat m) { 31 super(m, Range.all()); 32 if( !empty() && checkVector(_channels, _depth) < 0 ) 33 throw new IllegalArgumentException("Incompatible Mat"); 34 //FIXME: do we need release() here? 35 } 36 MatOfRotatedRect(RotatedRect...a)37 public MatOfRotatedRect(RotatedRect...a) { 38 super(); 39 fromArray(a); 40 } 41 alloc(int elemNumber)42 public void alloc(int elemNumber) { 43 if(elemNumber>0) 44 super.create(elemNumber, 1, CvType.makeType(_depth, _channels)); 45 } 46 fromArray(RotatedRect...a)47 public void fromArray(RotatedRect...a) { 48 if(a==null || a.length==0) 49 return; 50 int num = a.length; 51 alloc(num); 52 float buff[] = new float[num * _channels]; 53 for(int i=0; i<num; i++) { 54 RotatedRect r = a[i]; 55 buff[_channels*i+0] = (float) r.center.x; 56 buff[_channels*i+1] = (float) r.center.y; 57 buff[_channels*i+2] = (float) r.size.width; 58 buff[_channels*i+3] = (float) r.size.height; 59 buff[_channels*i+4] = (float) r.angle; 60 } 61 put(0, 0, buff); //TODO: check ret val! 62 } 63 toArray()64 public RotatedRect[] toArray() { 65 int num = (int) total(); 66 RotatedRect[] a = new RotatedRect[num]; 67 if(num == 0) 68 return a; 69 float buff[] = new float[_channels]; 70 for(int i=0; i<num; i++) { 71 get(i, 0, buff); //TODO: check ret val! 72 a[i] = new RotatedRect(new Point(buff[0],buff[1]),new Size(buff[2],buff[3]),buff[4]); 73 } 74 return a; 75 } 76 fromList(List<RotatedRect> lr)77 public void fromList(List<RotatedRect> lr) { 78 RotatedRect ap[] = lr.toArray(new RotatedRect[0]); 79 fromArray(ap); 80 } 81 toList()82 public List<RotatedRect> toList() { 83 RotatedRect[] ar = toArray(); 84 return Arrays.asList(ar); 85 } 86 } 87