Merge pull request #1263 from abidrahmank:pyCLAHE_24
[profile/ivi/opencv.git] / modules / java / generator / src / java / core+MatOfByte.java
1 package org.opencv.core;
2
3 import java.util.Arrays;
4 import java.util.List;
5
6 public class MatOfByte extends Mat {
7     // 8UC(x)
8     private static final int _depth = CvType.CV_8U;
9     private static final int _channels = 1;
10
11     public MatOfByte() {
12         super();
13     }
14
15     protected MatOfByte(long addr) {
16         super(addr);
17         if( !empty() && checkVector(_channels, _depth) < 0 )
18             throw new IllegalArgumentException("Incompatible Mat");
19         //FIXME: do we need release() here?
20     }
21
22     public static MatOfByte fromNativeAddr(long addr) {
23         return new MatOfByte(addr);
24     }
25
26     public MatOfByte(Mat m) {
27         super(m, Range.all());
28         if( !empty() && checkVector(_channels, _depth) < 0 )
29             throw new IllegalArgumentException("Incompatible Mat");
30         //FIXME: do we need release() here?
31     }
32
33     public MatOfByte(byte...a) {
34         super();
35         fromArray(a);
36     }
37
38     public void alloc(int elemNumber) {
39         if(elemNumber>0)
40             super.create(elemNumber, 1, CvType.makeType(_depth, _channels));
41     }
42
43     public void fromArray(byte...a) {
44         if(a==null || a.length==0)
45             return;
46         int num = a.length / _channels;
47         alloc(num);
48         put(0, 0, a); //TODO: check ret val!
49     }
50
51     public byte[] toArray() {
52         int num = checkVector(_channels, _depth);
53         if(num < 0)
54             throw new RuntimeException("Native Mat has unexpected type or size: " + toString());
55         byte[] a = new byte[num * _channels];
56         if(num == 0)
57             return a;
58         get(0, 0, a); //TODO: check ret val!
59         return a;
60     }
61
62     public void fromList(List<Byte> lb) {
63         if(lb==null || lb.size()==0)
64             return;
65         Byte ab[] = lb.toArray(new Byte[0]);
66         byte a[] = new byte[ab.length];
67         for(int i=0; i<ab.length; i++)
68             a[i] = ab[i];
69         fromArray(a);
70     }
71
72     public List<Byte> toList() {
73         byte[] a = toArray();
74         Byte ab[] = new Byte[a.length];
75         for(int i=0; i<a.length; i++)
76             ab[i] = a[i];
77         return Arrays.asList(ab);
78     }
79 }