-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathofxARTUtils.h
129 lines (119 loc) · 3.63 KB
/
ofxARTUtils.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
// ofxARTUtils.h
//
// Created by nausea on 12/23/15.
//
//
#pragma once
#include "ofMain.h"
#include <AR/config.h>
#include <AR/ar.h>
namespace ofxArtool5 {
//toAR
inline AR_PIXEL_FORMAT toAR(ofPixelFormat & ofPf){
AR_PIXEL_FORMAT npf = AR_PIXEL_FORMAT_INVALID;
switch(ofPf){
case OF_PIXELS_GRAY:
npf = AR_PIXEL_FORMAT_MONO;
break;
case OF_PIXELS_RGB:
npf = AR_PIXEL_FORMAT_RGB;
break;
case OF_PIXELS_BGR:
npf = AR_PIXEL_FORMAT_BGR;
break;
case OF_PIXELS_RGBA:
npf = AR_PIXEL_FORMAT_RGBA;
break;
case OF_PIXELS_BGRA:
npf = AR_PIXEL_FORMAT_BGRA;
break;
case OF_PIXELS_RGB565:
npf = AR_PIXEL_FORMAT_RGB_565;
break;
case OF_PIXELS_NV21:
npf = AR_PIXEL_FORMAT_NV21;
break;
default:
break;
}
return npf;
}
template<class T> inline ARUint8 * toAR(ofBaseHasPixels_<T> & img){
return const_cast<unsigned char*>(img.getPixels().getData());
}
//MARKER
inline int getMarkerDir(ARMarkerInfo & mk){return mk.dir;}
inline ofVec2f getMarkerCenter(ARMarkerInfo & mk){return ofVec2f(mk.pos[0],mk.pos[1]);}
inline ofVec2f getMarker2DPoint(ARMarkerInfo & mk, int pid){return ofVec2f(mk.vertex[pid][0],mk.vertex[pid][1]);}
inline vector<ofVec2f> getMarker2DCorners(ARMarkerInfo &mk){
vector<ofVec2f> crn;
crn.clear();
for(int i=0;i<4;i++){
crn.push_back(getMarker2DPoint(mk, i));
}
return crn;
}
inline vector<ofVec2f> getMarker2DOrderedCorners(ARMarkerInfo & mk){
vector<ofVec2f> crn;
crn.clear();
int index = 4 - mk.dir;
for(int i=0;i<4;i++){
crn.push_back(getMarker2DPoint(mk, index));
index++;
if(index>=4)index=0;
}
return crn;
}
//MISC
inline vector<string> getThresholdNames(){
vector<string> threshNames;
threshNames.resize(6);
threshNames[0] = "MANUAL";
threshNames[1] = "AUTO MEDIAN";
threshNames[2] = "AUTO OTSU";
threshNames[3] = "AUTO ADAPTIVE";
threshNames[4] = "AUTO BRACKETING";
threshNames[5] = "UNKNOWN";
return threshNames;
}
inline string getThresholdModeName(AR_LABELING_THRESH_MODE tm){
string s;
switch(tm){
case AR_LABELING_THRESH_MODE_MANUAL:
s = "MANUAL";
break;
case AR_LABELING_THRESH_MODE_AUTO_MEDIAN:
s = "AUTO MEDIAN";
break;
case AR_LABELING_THRESH_MODE_AUTO_OTSU:
s = "AUTO OTSU";
break;
case AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE:
s = "AUTO ADAPTIVE";
break;
case AR_LABELING_THRESH_MODE_AUTO_BRACKETING:
s = "AUTO BRACKETING";
break;
default:
s = "UNKNOWN";
break;
}
return s;
}
inline string getImageProcModeName(int md){
string n;
switch(md){
case AR_IMAGE_PROC_FRAME_IMAGE:
n="AR_IMAGE_PROC_FRAME_IMAGE";
break;
case AR_IMAGE_PROC_FIELD_IMAGE:
n="AR_IMAGE_PROC_FIELD_IMAGE";
break;
default:
n="UNKNOWN";
break;
}
return n;
}
}