[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39122] branches/soc-2011-tomato: Camera tracking integration
Sergey Sharybin
g.ulairi at gmail.com
Sun Aug 7 10:58:03 CEST 2011
Revision: 39122
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39122
Author: nazgul
Date: 2011-08-07 08:58:03 +0000 (Sun, 07 Aug 2011)
Log Message:
-----------
Camera tracking integration
===========================
Expose parameters for feature detection into redo panel.
Modified Paths:
--------------
branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
branches/soc-2011-tomato/extern/libmv/libmv-capi.h
branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp 2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.cpp 2011-08-07 08:58:03 UTC (rev 39122)
@@ -468,11 +468,14 @@
/* ************ feature detector ************ */
-struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride)
+struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride,
+ int margin, int min_trackness, int min_distance)
{
- std::vector<libmv::Corner> detect= libmv::Detect(data, width, height, stride);
+ std::vector<libmv::Corner> detect;
std::vector<libmv::Corner> *libmv_corners= new std::vector<libmv::Corner>();
+ detect= libmv::Detect(data, width, height, stride, margin, min_trackness, min_distance);
+
libmv_corners->insert(libmv_corners->begin(), detect.begin(), detect.end());
return (libmv_Corners *)libmv_corners;
Modified: branches/soc-2011-tomato/extern/libmv/libmv-capi.h
===================================================================
--- branches/soc-2011-tomato/extern/libmv/libmv-capi.h 2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/extern/libmv/libmv-capi.h 2011-08-07 08:58:03 UTC (rev 39122)
@@ -65,7 +65,8 @@
void libmv_destroyReconstruction(struct libmv_Reconstruction *libmv_reconstruction);
/* feature detector */
-struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride);
+struct libmv_Corners *libmv_detectCorners(unsigned char *data, int width, int height, int stride,
+ int margin, int min_trackness, int min_distance);
int libmv_countCorners(struct libmv_Corners *libmv_corners);
void libmv_getCorner(struct libmv_Corners *libmv_corners, int number, double *x, double *y, double *score, double *size);
void libmv_destroyCorners(struct libmv_Corners *libmv_corners);
Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h 2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h 2011-08-07 08:58:03 UTC (rev 39122)
@@ -84,7 +84,7 @@
void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2], float nco[2]);
void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float co[2], float nco[2]);
-void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, int framenr);
+void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, int framenr, int margin, int min_trackness, int min_distance);
struct MovieTrackingTrack *BKE_tracking_indexed_bundle(struct MovieTracking *tracking, int bundlenr);
Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-08-07 08:58:03 UTC (rev 39122)
@@ -1250,14 +1250,14 @@
}
#endif
-void BKE_tracking_detect(MovieTracking *tracking, ImBuf *ibuf, int framenr)
+void BKE_tracking_detect(MovieTracking *tracking, ImBuf *ibuf, int framenr, int margin, int min_trackness, int min_distance)
{
#ifdef WITH_LIBMV
struct libmv_Corners *corners;
unsigned char *pixels= acquire_ucharbuf(ibuf);
int a;
- corners= libmv_detectCorners(pixels, ibuf->x, ibuf->y, ibuf->x);
+ corners= libmv_detectCorners(pixels, ibuf->x, ibuf->y, ibuf->x, margin, min_trackness, min_distance);
MEM_freeN(pixels);
a= libmv_countCorners(corners);
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c 2011-08-07 08:56:13 UTC (rev 39121)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c 2011-08-07 08:58:03 UTC (rev 39122)
@@ -2185,12 +2185,15 @@
/********************** detect features operator *********************/
-static int detect_features_exec(bContext *C, wmOperator *UNUSED(op))
+static int detect_features_exec(bContext *C, wmOperator *op)
{
SpaceClip *sc= CTX_wm_space_clip(C);
MovieClip *clip= ED_space_clip(sc);
ImBuf *ibuf= BKE_movieclip_acquire_ibuf(clip, &sc->user);
MovieTrackingTrack *track= clip->tracking.tracks.first;
+ int margin= RNA_int_get(op->ptr, "margin");
+ int min_trackness= RNA_int_get(op->ptr, "min_trackness");
+ int min_distance= RNA_int_get(op->ptr, "min_distance");
/* deselect existing tracks */
while(track) {
@@ -2201,7 +2204,7 @@
track= track->next;
}
- BKE_tracking_detect(&clip->tracking, ibuf, sc->user.framenr);
+ BKE_tracking_detect(&clip->tracking, ibuf, sc->user.framenr, margin, min_trackness, min_distance);
IMB_freeImBuf(ibuf);
@@ -2224,6 +2227,11 @@
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_int(ot->srna, "margin", 16, 0, INT_MAX, "Margin", "Only corners further than margin pixels from the image edges are considered", 0, 300);
+ RNA_def_int(ot->srna, "min_trackness", 16, 0, INT_MAX, "Trackness", "Minimum score to add a corner", 0, 300);
+ RNA_def_int(ot->srna, "min_distance", 120, 0, INT_MAX, "Distance", "Minimal distance accepted between two corners", 0, 300);
}
/********************** frame jump operator *********************/
More information about the Bf-blender-cvs
mailing list