Changeset 326 in flair-src
- Timestamp:
- Sep 3, 2019, 3:42:07 PM (5 years ago)
- Location:
- branches/sanscv
- Files:
-
- 1 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sanscv/demos/OpticalFlow/uav/src/DemoOpticalFlow.h
r325 r326 65 65 flair::filter::OpticalFlowCompensated *opticalFlowCompensated; 66 66 flair::filter::OpticalFlowSpeed *opticalFlowSpeedRaw; 67 //flair::filter::EulerDerivative *opticalFlowAccelerationRaw;68 flair::gui::PushButton *startOpticalflow,*stopOpticalflow;69 void StartOpticalFlow(void);67 flair::filter::EulerDerivative *opticalFlowAccelerationRaw; 68 flair::gui::PushButton *startOpticalflow,*stopOpticalflow; 69 void StartOpticalFlow(void); 70 70 flair::filter::LowPassFilter* opticalFlowSpeed; 71 71 flair::filter::LowPassFilter* opticalFlowAcceleration; -
branches/sanscv/lib/FlairCore/src/Image.cpp
r324 r326 29 29 : io_data(parent, name, n), dataType(width, height, format) { 30 30 this->allocate_data = allocate_data; 31 Printf("Image %s\n",ObjectName().c_str()); 31 32 32 if (allocate_data) { 33 33 switch (format) { … … 73 73 74 74 char* Image::DefaultAllocFunction(ssize_t size){ 75 Printf("default alloc %i\n",size);76 75 return (char*)malloc(size); 77 76 } 78 77 79 78 void Image::DefaultFreeFunction(char* buffer){ 80 Printf("default free\n");81 79 free(buffer); 82 80 } -
branches/sanscv/lib/FlairVisionFilter/src/CvtColor.cpp
r325 r326 15 15 #include "VisionFilter.h" 16 16 #include <Image.h> 17 //#include <dspcv_gpp.h>18 17 #include <typeinfo> 19 18 -
branches/sanscv/lib/FlairVisionFilter/src/HoughLines.cpp
r325 r326 20 20 #include <GroupBox.h> 21 21 #include <SpinBox.h> 22 #include <DoubleSpinBox.h> 23 //#include <dspcv_gpp.h> 22 #include <DoubleSpinBox.h>> 24 23 #include <typeinfo> 25 24 #include <math.h> -
branches/sanscv/lib/FlairVisionFilter/src/ImgThreshold.cpp
r325 r326 18 18 #include <GroupBox.h> 19 19 #include <SpinBox.h> 20 //#include <dspcv_gpp.h>21 20 #include <typeinfo> 22 21 -
branches/sanscv/lib/FlairVisionFilter/src/OpticalFlow.cpp
r325 r326 19 19 #include <GroupBox.h> 20 20 #include <SpinBox.h> 21 //#include <dspcv_gpp.h>22 #include <algorithm>23 21 #include <OneAxisRotation.h> 24 #include <Vector3D.h>25 22 #include <typeinfo> 26 23 -
branches/sanscv/lib/FlairVisionFilter/src/OpticalFlowData.cpp
r324 r326 12 12 13 13 #include "OpticalFlowData.h" 14 #include <cstring> 14 #include "VisionFilter.h" 15 #include <string.h> 15 16 16 17 using std::string; 17 18 18 namespace flair 19 { 20 namespace filter 21 { 19 class OpticalFlowData_impl { 20 public: 21 OpticalFlowData_impl(flair::filter::OpticalFlowData* self,uint32_t max_features) { 22 this->self=self; 23 this->max_features=max_features; 24 nb_features=0; 25 pointsA=(IntPoint*)malloc(max_features*sizeof(IntPoint)); 26 pointsB=(FloatPoint*)malloc(max_features*sizeof(FloatPoint)); 22 27 23 OpticalFlowData::OpticalFlowData(const Object* parent,uint32_t max_features,string name,uint32_t n): io_data(parent,name,n) 24 { 25 this->max_features=max_features; 26 nb_features=0; 28 found_features=(char*)malloc(max_features*sizeof(char)); 29 features_error=(uint32_t*)malloc(max_features*sizeof(uint32_t)); 30 } 27 31 28 pointsA=(CvPoint *)malloc(max_features*sizeof(CvPoint)); 29 pointsB=(CvPoint2D32f *)malloc(max_features*sizeof(CvPoint2D32f)); 32 ~OpticalFlowData_impl() { 33 free((char*)pointsA); 34 free((char*)pointsB); 30 35 31 found_features=(char *)malloc(max_features*sizeof(char)); 32 features_error=(uint32_t*)malloc(max_features*sizeof(uint32_t)); 36 free((char*)found_features); 37 free((char*)features_error); 38 } 39 40 void Resize(uint32_t value) { 41 IntPoint *new_pointsA; 42 FloatPoint *new_pointsB; 43 char *new_found_features; 44 uint32_t *new_features_error; 45 46 new_pointsA=(IntPoint*)malloc(value*sizeof(IntPoint)); 47 new_pointsB=(FloatPoint*)malloc(value*sizeof(FloatPoint)); 48 new_found_features=(char*)malloc(value*sizeof(char)); 49 new_features_error=(uint32_t*)malloc(value*sizeof(uint32_t)); 50 51 self->GetMutex(); 52 if(value>max_features) { 53 memcpy(new_pointsA,pointsA,max_features*sizeof(IntPoint)); 54 memcpy(new_pointsB,pointsB,max_features*sizeof(FloatPoint)); 55 memcpy(new_found_features,found_features,max_features*sizeof(char)); 56 memcpy(new_features_error,features_error,max_features*sizeof(uint32_t)); 57 } else { 58 memcpy(new_pointsA,pointsA,value*sizeof(IntPoint)); 59 memcpy(new_pointsB,pointsB,value*sizeof(FloatPoint)); 60 memcpy(new_found_features,found_features,value*sizeof(char)); 61 memcpy(new_features_error,features_error,value*sizeof(uint32_t)); 62 if(nb_features>value) nb_features=value; //si nb_features est le nombre de point qui ont effectivement une correspondande, ça me parait louche. Sauf si les points sont classés et que ceux qui ont une correpondance sont toujours au début 63 } 64 max_features=value; 65 self->ReleaseMutex(); 66 67 free((char*)pointsA); 68 free((char*)pointsB); 69 free((char*)found_features); 70 free((char*)features_error); 71 72 pointsA=new_pointsA; 73 pointsB=new_pointsB; 74 found_features=new_found_features; 75 features_error=new_features_error; 76 } 77 78 uint32_t max_features; 79 uint32_t nb_features; 80 IntPoint* pointsA; 81 FloatPoint* pointsB; 82 char *found_features; 83 uint32_t *features_error; 84 85 private: 86 flair::filter::OpticalFlowData *self; 87 }; 88 89 namespace flair { 90 namespace filter { 91 92 OpticalFlowData::OpticalFlowData(const Object* parent,uint32_t max_features,string name,uint32_t n): io_data(parent,name,n) { 93 pimpl_=new OpticalFlowData_impl(this,max_features); 33 94 } 34 95 35 OpticalFlowData::~OpticalFlowData() 36 { 37 free(pointsA); 38 free(pointsB); 39 40 free(found_features); 41 free(features_error); 96 OpticalFlowData::~OpticalFlowData() { 97 delete pimpl_; 42 98 } 43 99 44 CvPoint* OpticalFlowData::PointsA(void) const 45 { 46 return pointsA; 100 IntPoint* OpticalFlowData::PointsA(void) const { 101 return pimpl_->pointsA; 47 102 } 48 103 49 CvPoint2D32f* OpticalFlowData::PointsB(void) const 50 { 51 return pointsB; 104 FloatPoint* OpticalFlowData::PointsB(void) const { 105 return pimpl_->pointsB; 52 106 } 53 107 54 char *OpticalFlowData::FoundFeature(void) const 55 { 56 return found_features; 108 char *OpticalFlowData::FoundFeature(void) const { 109 return pimpl_->found_features; 57 110 } 58 111 59 uint32_t *OpticalFlowData::FeatureError(void) const 60 { 61 return features_error; 112 uint32_t *OpticalFlowData::FeatureError(void) const { 113 return pimpl_->features_error; 62 114 } 63 115 64 116 // value is new max_features value 65 117 void OpticalFlowData::Resize(uint32_t value) { 66 CvPoint *new_pointsA; 67 CvPoint2D32f *new_pointsB; 68 char *new_found_features; 69 uint32_t *new_features_error; 70 71 new_pointsA=(CvPoint *)malloc(value*sizeof(CvPoint)); 72 new_pointsB=(CvPoint2D32f *)malloc(value*sizeof(CvPoint2D32f)); 73 new_found_features=(char *)malloc(value*sizeof(char)); 74 new_features_error=(uint32_t *)malloc(value*sizeof(uint32_t)); 75 76 GetMutex(); 77 if(value>max_features) { 78 memcpy(new_pointsA,pointsA,max_features*sizeof(CvPoint)); 79 memcpy(new_pointsB,pointsB,max_features*sizeof(CvPoint2D32f)); 80 memcpy(new_found_features,found_features,max_features*sizeof(char)); 81 memcpy(new_features_error,features_error,max_features*sizeof(uint32_t)); 82 } 83 else { 84 memcpy(new_pointsA,pointsA,value*sizeof(CvPoint)); 85 memcpy(new_pointsB,pointsB,value*sizeof(CvPoint2D32f)); 86 memcpy(new_found_features,found_features,value*sizeof(char)); 87 memcpy(new_features_error,features_error,value*sizeof(uint32_t)); 88 if(nb_features>value) nb_features=value; //si nb_features est le nombre de point qui ont effectivement une correspondande, ça me parait louche. Sauf si les points sont classés et que ceux qui ont une correpondance sont toujours au début 89 } 90 max_features=value; 91 ReleaseMutex(); 92 93 free(pointsA); 94 free(pointsB); 95 free(found_features); 96 free(features_error); 97 98 pointsA=new_pointsA; 99 pointsB=new_pointsB; 100 found_features=new_found_features; 101 features_error=new_features_error; 118 pimpl_->Resize(value); 102 119 } 103 120 104 void OpticalFlowData::RawRead(char* dst) const 105 { 121 void OpticalFlowData::RawRead(char* dst) const { 106 122 Warn("non implementé\n"); 107 123 } 108 124 109 void OpticalFlowData::SetPointsA(const CvPoint* points) 110 { 125 void OpticalFlowData::SetPointsA(const IntPoint* points) { 111 126 GetMutex(); 112 memcpy(p ointsA,points,max_features*sizeof(CvPoint));127 memcpy(pimpl_->pointsA,points,pimpl_->max_features*sizeof(IntPoint)); 113 128 ReleaseMutex(); 114 129 } 115 130 116 void OpticalFlowData::SetPointsB(const CvPoint2D32f* points) 117 { 131 void OpticalFlowData::SetPointsB(const FloatPoint* points) { 118 132 GetMutex(); 119 memcpy(p ointsB,points,max_features*sizeof(CvPoint2D32f));133 memcpy(pimpl_->pointsB,points,pimpl_->max_features*sizeof(FloatPoint)); 120 134 ReleaseMutex(); 121 135 } 122 136 123 void OpticalFlowData::SetFoundFeature(const char *found_features) 124 { 137 void OpticalFlowData::SetFoundFeature(const char *found_features) { 125 138 GetMutex(); 126 memcpy( this->found_features,found_features,max_features*sizeof(char));139 memcpy(pimpl_->found_features,found_features,pimpl_->max_features*sizeof(char)); 127 140 ReleaseMutex(); 128 141 } 129 142 130 void OpticalFlowData::SetFeatureError(const uint32_t *features_error) 131 { 143 void OpticalFlowData::SetFeatureError(const uint32_t *features_error) { 132 144 GetMutex(); 133 memcpy( this->features_error,features_error,max_features*sizeof(uint32_t));145 memcpy(pimpl_->features_error,features_error,pimpl_->max_features*sizeof(uint32_t)); 134 146 ReleaseMutex(); 135 147 } 136 148 137 uint32_t OpticalFlowData::MaxFeatures(void) const 138 { 139 return max_features; 149 uint32_t OpticalFlowData::MaxFeatures(void) const { 150 return pimpl_->max_features; 140 151 } 141 152 142 uint32_t OpticalFlowData::NbFeatures(void) const 143 { 144 return nb_features; 153 uint32_t OpticalFlowData::NbFeatures(void) const { 154 return pimpl_->nb_features; 145 155 } 146 156 147 void OpticalFlowData::SetNbFeatures(uint32_t value) 148 { 157 void OpticalFlowData::SetNbFeatures(uint32_t value) { 149 158 GetMutex(); 150 nb_features=value;159 pimpl_->nb_features=value; 151 160 ReleaseMutex(); 152 161 } -
branches/sanscv/lib/FlairVisionFilter/src/OpticalFlowData.h
r324 r326 11 11 12 12 #include <io_data.h> 13 #include <cvtypes.h> 13 14 //TODO: use flai::core::Vector2D 15 typedef struct IntPoint { 16 int x; 17 int y; 18 } 19 IntPoint; 20 21 typedef struct FloatPoint { 22 float x; 23 float y; 24 } 25 FloatPoint; 26 27 class OpticalFlowData_impl; 14 28 15 29 namespace flair { namespace filter { … … 53 67 * 54 68 */ 55 CvPoint* PointsA(void) const;69 IntPoint* PointsA(void) const; 56 70 57 71 /*! … … 59 73 * 60 74 */ 61 CvPoint2D32f* PointsB(void) const;75 FloatPoint* PointsB(void) const; 62 76 63 77 /*! … … 79 93 * \param points points 80 94 */ 81 void SetPointsA(const CvPoint *points);95 void SetPointsA(const IntPoint *points); 82 96 83 97 /*! … … 86 100 * \param points points 87 101 */ 88 void SetPointsB(const CvPoint2D32f*points);102 void SetPointsB(const FloatPoint *points); 89 103 90 104 /*! … … 139 153 */ 140 154 void RawRead(char *dst) const; 141 155 142 156 private: 143 uint32_t max_features;144 uint32_t nb_features;145 CvPoint* pointsA;146 CvPoint2D32f* pointsB;147 char *found_features;148 uint32_t *features_error;149 157 Type dataType; 158 OpticalFlowData_impl *pimpl_; 150 159 }; 151 160 } // end namespace filter -
branches/sanscv/lib/FlairVisionFilter/src/Sobel.cpp
r325 r326 18 18 #include <GroupBox.h> 19 19 #include <SpinBox.h> 20 //#include <dspcv_gpp.h>21 20 #include <typeinfo> 22 21
Note:
See TracChangeset
for help on using the changeset viewer.