Skip to content

Commit 97a79c9

Browse files
committed
Update SDK version, and allow command-line overrides of preferences.
1 parent 5826caa commit 97a79c9

File tree

2 files changed

+62
-39
lines changed

2 files changed

+62
-39
lines changed

build.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,21 @@
1010
# Author(s): Philip Lamb, Thorsten Bux, John Wolf, Dan Bell.
1111
#
1212

13+
# -e = exit on errors; -x = debug
14+
set -e
15+
16+
# -x = debug
17+
set -x
18+
1319
# Get our location.
1420
OURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
1521

16-
SDK_VERSION='1.0.3'
22+
SDK_VERSION='1.0.6.1'
23+
# If the version number includes a dev build number, drop it.
24+
SDK_VERSION_CANON=`echo -n "${SDK_VERSION}" | sed -E -e 's/([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9])?/\1/'`
1725
# If the tiny version number is 0, drop it.
18-
SDK_VERSION_PRETTY=`echo -n "${SDK_VERSION}" | sed -E -e 's/([0-9]+\.[0-9]+)\.0/\1/'`
19-
SDK_URL_DIR="https://github.com/artoolkitx/artoolkitx/releases/download/${SDK_VERSION_PRETTY}/"
26+
SDK_VERSION_PRETTY=`echo -n "${SDK_VERSION_CANON}" | sed -E -e 's/([0-9]+\.[0-9]+)\.0/\1/'`
27+
SDK_URL_DIR="https://github.com/artoolkitx/artoolkitx/releases/download/${SDK_VERSION}/"
2028

2129
VERSION=`sed -En -e 's/.*VERSION_STRING[[:space:]]+"([0-9]+\.[0-9]+(\.[0-9]+)*)".*/\1/p' ${OURDIR}/version.h`
2230
# If the tiny version number is 0, drop it.
@@ -31,12 +39,6 @@ if [ $# -eq 0 ]; then
3139
usage
3240
fi
3341

34-
# -e = exit on errors; -x = debug
35-
set -e
36-
37-
# -x = debug
38-
#set -x
39-
4042
# Parse parameters
4143
while test $# -gt 0
4244
do

calib_camera.cpp

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -215,14 +215,19 @@ static void quit(int rc);
215215
static void reshape(int w, int h);
216216
static void drawView(void);
217217

218-
//static void init(int argc, char *argv[]);
219-
//static void usage(char *com);
218+
static void init(int argc, char *argv[]);
219+
static void usage(char *com);
220220
static void saveParam(const ARParam *param, ARdouble err_min, ARdouble err_avg, ARdouble err_max, void *userdata);
221221

222222
static void startVideo(void)
223223
{
224-
char buf[256];
225-
snprintf(buf, sizeof(buf), "%s %s", (gPreferenceCameraOpenToken ? gPreferenceCameraOpenToken : ""), (gPreferenceCameraResolutionToken ? gPreferenceCameraResolutionToken : ""));
224+
char *buf = NULL;
225+
if (asprintf(&buf, "%s%s%s",
226+
(gPreferenceCameraOpenToken ? gPreferenceCameraOpenToken : ""),
227+
(gPreferenceCameraOpenToken && gPreferenceCameraResolutionToken ? " " : ""),
228+
(gPreferenceCameraResolutionToken ? gPreferenceCameraResolutionToken : "")) < 0) {
229+
ARLOGe("Error: out of memory!!!.\n");
230+
}
226231

227232
vs = new ARVideoSource;
228233
if (!vs) {
@@ -236,6 +241,7 @@ static void startVideo(void)
236241
}
237242
}
238243
gPostVideoSetupDone = false;
244+
free(buf);
239245
}
240246

241247
static void stopVideo(void)
@@ -350,6 +356,9 @@ int main(int argc, char *argv[])
350356
gCalibrationPatternSize = getPreferencesCalibrationPatternSize(gPreferences);
351357
gCalibrationPatternSpacing = getPreferencesCalibrationPatternSpacing(gPreferences);
352358

359+
// Allow command-line to override preferences.
360+
init(argc, argv);
361+
353362
gSDLEventPreferencesChanged = SDL_RegisterEvents(1);
354363

355364
// Create a window.
@@ -704,23 +713,22 @@ static void usage(char *com)
704713
exit(0);
705714
}
706715

707-
/*
708716
static void init(int argc, char *argv[])
709717
{
710-
ARGViewport viewport;
711-
char *vconf = NULL;
712-
int i;
713-
int gotTwoPartOption;
714-
int screenWidth, screenHeight, screenMargin;
718+
int i;
719+
int gotTwoPartOption;
715720

716-
chessboardCornerNumX = 0;
717-
chessboardCornerNumY = 0;
718-
calibImageNum = 0;
719-
patternWidth = 0.0f;
721+
char *vconf = NULL;
722+
int cornerNumX = 0;
723+
int cornerNumY = 0;
724+
int calibImageNum = 0;
725+
float patternWidth = 0.0f;
720726

727+
char *cwd = NULL;
721728
arMalloc(cwd, char, MAXPATHLEN);
722729
if (!getcwd(cwd, MAXPATHLEN)) ARLOGe("Unable to read current working directory.\n");
723730
else ARPRINT("Current working directory is '%s'\n", cwd);
731+
free(cwd);
724732

725733
i = 1; // argv[0] is name of app, so start at 1.
726734
while (i < argc) {
@@ -741,35 +749,48 @@ static void init(int argc, char *argv[])
741749
ARPRINT("%s version %s\n", argv[0], AR_HEADER_VERSION_STRING);
742750
exit(0);
743751
} else if( strncmp(argv[i], "-cornerx=", 9) == 0 ) {
744-
if( sscanf(&(argv[i][9]), "%d", &chessboardCornerNumX) != 1 ) usage(argv[0]);
745-
if( chessboardCornerNumX <= 0 ) usage(argv[0]);
752+
if( sscanf(&(argv[i][9]), "%d", &cornerNumX) != 1 ) usage(argv[0]);
753+
if( cornerNumX <= 0 ) usage(argv[0]);
746754
} else if( strncmp(argv[i], "-cornery=", 9) == 0 ) {
747-
if( sscanf(&(argv[i][9]), "%d", &chessboardCornerNumY) != 1 ) usage(argv[0]);
748-
if( chessboardCornerNumY <= 0 ) usage(argv[0]);
755+
if( sscanf(&(argv[i][9]), "%d", &cornerNumY) != 1 ) usage(argv[0]);
756+
if( cornerNumY <= 0 ) usage(argv[0]);
749757
} else if( strncmp(argv[i], "-imagenum=", 10) == 0 ) {
750758
if( sscanf(&(argv[i][10]), "%d", &calibImageNum) != 1 ) usage(argv[0]);
751759
if( calibImageNum <= 0 ) usage(argv[0]);
752760
} else if( strncmp(argv[i], "-pattwidth=", 11) == 0 ) {
753761
if( sscanf(&(argv[i][11]), "%f", &patternWidth) != 1 ) usage(argv[0]);
754-
if( patternWidth <= 0 ) usage(argv[0]);
762+
if( patternWidth <= 0.0 ) usage(argv[0]);
755763
} else {
756764
ARLOGe("Error: invalid command line argument '%s'.\n", argv[i]);
757765
usage(argv[0]);
758766
}
759767
}
760768
i++;
761769
}
762-
if( chessboardCornerNumX == 0 ) chessboardCornerNumX = CHESSBOARD_CORNER_NUM_X;
763-
if( chessboardCornerNumY == 0 ) chessboardCornerNumY = CHESSBOARD_CORNER_NUM_Y;
764-
if( calibImageNum == 0 ) calibImageNum = CALIB_IMAGE_NUM;
765-
if( patternWidth == 0.0f ) patternWidth = (float)CHESSBOARD_PATTERN_WIDTH;
766-
ARPRINT("CHESSBOARD_CORNER_NUM_X = %d\n", chessboardCornerNumX);
767-
ARPRINT("CHESSBOARD_CORNER_NUM_Y = %d\n", chessboardCornerNumY);
768-
ARPRINT("CHESSBOARD_PATTERN_WIDTH = %f\n", patternWidth);
769-
ARPRINT("CALIB_IMAGE_NUM = %d\n", calibImageNum);
770-
ARPRINT("Video parameter: %s\n", vconf);
771-
772-
*/
770+
if (cornerNumX != 0) {
771+
ARPRINT("gCalibrationPatternSize.width = %d\n", cornerNumX);
772+
gCalibrationPatternSize.width = cornerNumX;
773+
}
774+
if (cornerNumY != 0) {
775+
ARPRINT("gCalibrationPatternSize.height = %d\n", cornerNumY);
776+
gCalibrationPatternSize.height = cornerNumY;
777+
}
778+
if (patternWidth != 0.0f) {
779+
ARPRINT("gCalibrationPatternSpacing = %f\n", patternWidth);
780+
gCalibrationPatternSpacing = patternWidth;
781+
}
782+
if (calibImageNum != 0) {
783+
ARPRINT("gPreferencesCalibImageCountMax = %d\n", calibImageNum);
784+
gPreferencesCalibImageCountMax = calibImageNum;
785+
}
786+
if (vconf != NULL) {
787+
ARPRINT("gPreferenceCameraOpenToken = '%s'\n", vconf);
788+
free(gPreferenceCameraOpenToken);
789+
gPreferenceCameraOpenToken = strdup(vconf);
790+
free(gPreferenceCameraResolutionToken);
791+
gPreferenceCameraResolutionToken = NULL;
792+
}
793+
}
773794

774795
static void drawBackground(const float width, const float height, const float x, const float y, const bool drawBorder)
775796
{

0 commit comments

Comments
 (0)