Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef AGAST_CORNER_DETECT_H_
00011 #define AGAST_CORNER_DETECT_H_
00012
00013 #include "agast7_12d.h"
00014 #include "oast9_16.h"
00015 #include <cvd/image.h>
00016 #include <cvd/byte.h>
00017 #include <opencv/cv.h>
00018
00019 namespace agast{
00020
00021 namespace agast7_12d{
00022
00023 static AgastDetector7_12d detector;
00024
00025
00026 __inline__ void agast_corner_detect12d(const CVD::BasicImage<CVD::byte>& im, std::vector<CVD::ImageRef>& corners, int barrier)
00027 {
00028 detector.set_imageSize(im.size().x, im.size().y);
00029 detector.set_threshold(barrier);
00030 std::vector<CvPoint> keypoints;
00031 detector.detect((unsigned char*)im.data(),keypoints);
00032 corners.reserve(keypoints.size());
00033 for(size_t i=0;i<keypoints.size();++i)
00034 {
00035 corners.push_back(CVD::ImageRef(keypoints.at(i).x, keypoints.at(i).y));
00036 }
00037 keypoints.clear();
00038 }
00039
00040
00041 __inline__ void agast_corner_detect12d(const cv::Mat& im, std::vector<CVD::ImageRef>& corners, int barrier)
00042 {
00043 detector.set_imageSize(im.size().width, im.size().height);
00044 detector.set_threshold(barrier);
00045 std::vector<CvPoint> keypoints;
00046 detector.detect((unsigned char*)im.data,keypoints);
00047 corners.reserve(keypoints.size());
00048 for(size_t i=0;i<keypoints.size();++i)
00049 {
00050 corners.push_back(CVD::ImageRef(keypoints.at(i).x, keypoints.at(i).y));
00051 }
00052 keypoints.clear();
00053 }
00054
00055 }
00056
00057 namespace oast9_16{
00058 static OastDetector9_16 detector;
00059
00060 __inline__ void oast_corner_detect16(const CVD::BasicImage<CVD::byte>& im, std::vector<CVD::ImageRef>& corners, int barrier)
00061 {
00062 detector.set_imageSize(im.size().x, im.size().y);
00063 detector.set_threshold(barrier);
00064 std::vector<CvPoint> keypoints;
00065 detector.detect((unsigned char*)im.data(),keypoints);
00066 corners.reserve(keypoints.size());
00067 for(size_t i=0;i<keypoints.size();++i)
00068 {
00069 corners.push_back(CVD::ImageRef(keypoints.at(i).x, keypoints.at(i).y));
00070 }
00071 keypoints.clear();
00072 }
00073
00074
00075 __inline__ void oast_corner_detect16(const cv::Mat& im, std::vector<CVD::ImageRef>& corners, int barrier)
00076 {
00077 detector.set_imageSize(im.size().width, im.size().height);
00078 detector.set_threshold(barrier);
00079 std::vector<CvPoint> keypoints;
00080 detector.detect((unsigned char*)im.data,keypoints);
00081 corners.reserve(keypoints.size());
00082 for(size_t i=0;i<keypoints.size();++i)
00083 {
00084 corners.push_back(CVD::ImageRef(keypoints.at(i).x, keypoints.at(i).y));
00085 }
00086 keypoints.clear();
00087 }
00088
00089 }
00090
00091 }
00092 #endif