001package org.opencv.core; 002 003import java.util.Arrays; 004import java.util.List; 005 006 007public class MatOfInt extends Mat { 008 // 32SC1 009 private static final int _depth = CvType.CV_32S; 010 private static final int _channels = 1; 011 012 public MatOfInt() { 013 super(); 014 } 015 016 protected MatOfInt(long addr) { 017 super(addr); 018 if( !empty() && checkVector(_channels, _depth) < 0 ) 019 throw new IllegalArgumentException("Incompatible Mat"); 020 //FIXME: do we need release() here? 021 } 022 023 public static MatOfInt fromNativeAddr(long addr) { 024 return new MatOfInt(addr); 025 } 026 027 public MatOfInt(Mat m) { 028 super(m, Range.all()); 029 if( !empty() && checkVector(_channels, _depth) < 0 ) 030 throw new IllegalArgumentException("Incompatible Mat"); 031 //FIXME: do we need release() here? 032 } 033 034 public MatOfInt(int...a) { 035 super(); 036 fromArray(a); 037 } 038 039 public void alloc(int elemNumber) { 040 if(elemNumber>0) 041 super.create(elemNumber, 1, CvType.makeType(_depth, _channels)); 042 } 043 044 public void fromArray(int...a) { 045 if(a==null || a.length==0) 046 return; 047 int num = a.length / _channels; 048 alloc(num); 049 put(0, 0, a); //TODO: check ret val! 050 } 051 052 public int[] toArray() { 053 int num = checkVector(_channels, _depth); 054 if(num < 0) 055 throw new RuntimeException("Native Mat has unexpected type or size: " + toString()); 056 int[] a = new int[num * _channels]; 057 if(num == 0) 058 return a; 059 get(0, 0, a); //TODO: check ret val! 060 return a; 061 } 062 063 public void fromList(List<Integer> lb) { 064 if(lb==null || lb.size()==0) 065 return; 066 Integer ab[] = lb.toArray(new Integer[0]); 067 int a[] = new int[ab.length]; 068 for(int i=0; i<ab.length; i++) 069 a[i] = ab[i]; 070 fromArray(a); 071 } 072 073 public List<Integer> toList() { 074 int[] a = toArray(); 075 Integer ab[] = new Integer[a.length]; 076 for(int i=0; i<a.length; i++) 077 ab[i] = a[i]; 078 return Arrays.asList(ab); 079 } 080}