1package org.opencv.core; 2 3public final class CvType { 4 5 // type depth constants 6 public static final int 7 CV_8U = 0, CV_8S = 1, 8 CV_16U = 2, CV_16S = 3, 9 CV_32S = 4, 10 CV_32F = 5, 11 CV_64F = 6, 12 CV_USRTYPE1 = 7; 13 14 // predefined type constants 15 public static final int 16 CV_8UC1 = CV_8UC(1), CV_8UC2 = CV_8UC(2), CV_8UC3 = CV_8UC(3), CV_8UC4 = CV_8UC(4), 17 CV_8SC1 = CV_8SC(1), CV_8SC2 = CV_8SC(2), CV_8SC3 = CV_8SC(3), CV_8SC4 = CV_8SC(4), 18 CV_16UC1 = CV_16UC(1), CV_16UC2 = CV_16UC(2), CV_16UC3 = CV_16UC(3), CV_16UC4 = CV_16UC(4), 19 CV_16SC1 = CV_16SC(1), CV_16SC2 = CV_16SC(2), CV_16SC3 = CV_16SC(3), CV_16SC4 = CV_16SC(4), 20 CV_32SC1 = CV_32SC(1), CV_32SC2 = CV_32SC(2), CV_32SC3 = CV_32SC(3), CV_32SC4 = CV_32SC(4), 21 CV_32FC1 = CV_32FC(1), CV_32FC2 = CV_32FC(2), CV_32FC3 = CV_32FC(3), CV_32FC4 = CV_32FC(4), 22 CV_64FC1 = CV_64FC(1), CV_64FC2 = CV_64FC(2), CV_64FC3 = CV_64FC(3), CV_64FC4 = CV_64FC(4); 23 24 private static final int CV_CN_MAX = 512, CV_CN_SHIFT = 3, CV_DEPTH_MAX = (1 << CV_CN_SHIFT); 25 26 public static final int makeType(int depth, int channels) { 27 if (channels <= 0 || channels >= CV_CN_MAX) { 28 throw new java.lang.UnsupportedOperationException( 29 "Channels count should be 1.." + (CV_CN_MAX - 1)); 30 } 31 if (depth < 0 || depth >= CV_DEPTH_MAX) { 32 throw new java.lang.UnsupportedOperationException( 33 "Data type depth should be 0.." + (CV_DEPTH_MAX - 1)); 34 } 35 return (depth & (CV_DEPTH_MAX - 1)) + ((channels - 1) << CV_CN_SHIFT); 36 } 37 38 public static final int CV_8UC(int ch) { 39 return makeType(CV_8U, ch); 40 } 41 42 public static final int CV_8SC(int ch) { 43 return makeType(CV_8S, ch); 44 } 45 46 public static final int CV_16UC(int ch) { 47 return makeType(CV_16U, ch); 48 } 49 50 public static final int CV_16SC(int ch) { 51 return makeType(CV_16S, ch); 52 } 53 54 public static final int CV_32SC(int ch) { 55 return makeType(CV_32S, ch); 56 } 57 58 public static final int CV_32FC(int ch) { 59 return makeType(CV_32F, ch); 60 } 61 62 public static final int CV_64FC(int ch) { 63 return makeType(CV_64F, ch); 64 } 65 66 public static final int channels(int type) { 67 return (type >> CV_CN_SHIFT) + 1; 68 } 69 70 public static final int depth(int type) { 71 return type & (CV_DEPTH_MAX - 1); 72 } 73 74 public static final boolean isInteger(int type) { 75 return depth(type) < CV_32F; 76 } 77 78 public static final int ELEM_SIZE(int type) { 79 switch (depth(type)) { 80 case CV_8U: 81 case CV_8S: 82 return channels(type); 83 case CV_16U: 84 case CV_16S: 85 return 2 * channels(type); 86 case CV_32S: 87 case CV_32F: 88 return 4 * channels(type); 89 case CV_64F: 90 return 8 * channels(type); 91 default: 92 throw new java.lang.UnsupportedOperationException( 93 "Unsupported CvType value: " + type); 94 } 95 } 96 97 public static final String typeToString(int type) { 98 String s; 99 switch (depth(type)) { 100 case CV_8U: 101 s = "CV_8U"; 102 break; 103 case CV_8S: 104 s = "CV_8S"; 105 break; 106 case CV_16U: 107 s = "CV_16U"; 108 break; 109 case CV_16S: 110 s = "CV_16S"; 111 break; 112 case CV_32S: 113 s = "CV_32S"; 114 break; 115 case CV_32F: 116 s = "CV_32F"; 117 break; 118 case CV_64F: 119 s = "CV_64F"; 120 break; 121 case CV_USRTYPE1: 122 s = "CV_USRTYPE1"; 123 break; 124 default: 125 throw new java.lang.UnsupportedOperationException( 126 "Unsupported CvType value: " + type); 127 } 128 129 int ch = channels(type); 130 if (ch <= 4) 131 return s + "C" + ch; 132 else 133 return s + "C(" + ch + ")"; 134 } 135 136} 137