// bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.
BriefDescriptorExtractor( int bytes = 32 );
+ virtual void read( const FileNode& );
+ virtual void write( FileStorage& ) const;
+
virtual int descriptorSize() const;
virtual int descriptorType() const;
return CV_8UC1;
}
+void BriefDescriptorExtractor::read( const FileNode& fn)
+{
+ int descriptorSize = fn["descriptorSize"];
+ switch (descriptorSize)
+ {
+ case 16:
+ test_fn_ = pixelTests16;
+ break;
+ case 32:
+ test_fn_ = pixelTests32;
+ break;
+ case 64:
+ test_fn_ = pixelTests64;
+ break;
+ default:
+ CV_Error(CV_StsBadArg, "descriptorSize must be 16, 32, or 64");
+ }
+ bytes_ = descriptorSize;
+}
+
+void BriefDescriptorExtractor::write( FileStorage& fs) const
+{
+ fs << "descriptorSize" << bytes_;
+}
+
void BriefDescriptorExtractor::computeImpl(const Mat& image, std::vector<KeyPoint>& keypoints, Mat& descriptors) const
{
// Construct integral image for fast smoothing (box filter)
}
public void testRead() {
- KeyPoint point = new KeyPoint(55.775577545166016f, 44.224422454833984f, 16, 9.754629f, 8617.863f, 1, -1);
- List<KeyPoint> keypoints = Arrays.asList(point);
- Mat img = getTestImg();
- Mat descriptors = new Mat();
-
String filename = OpenCVTestRunner.getTempFileName("yml");
- writeFile(filename, "%YAML:1.0\nnOctaves: 4\nnOctaveLayers: 2\nextended: 1\nupright: 0\n");
+ writeFile(filename, "%YAML:1.0\ndescriptorSize: 64\n");
extractor.read(filename);
- extractor.compute(img, keypoints, descriptors);
- assertEquals(128, descriptors.cols());
+ assertEquals(64, extractor.descriptorSize());
}
public void testWrite() {
String filename = OpenCVTestRunner.getTempFileName("xml");
extractor.write(filename);
- //OpenCVTestRunner.Log("!!!!!!!" + readFile(filename));
- String truth = "<?xml version=\"1.0\"?>\n<opencv_storage>!!!!\n</opencv_storage>\n";
+ String truth = "<?xml version=\"1.0\"?>\n<opencv_storage>\n<descriptorSize>32</descriptorSize>\n</opencv_storage>\n";
assertEquals(truth, readFile(filename));
}
String filename = OpenCVTestRunner.getTempFileName("yml");
extractor.write(filename);
- //OpenCVTestRunner.Log("!!!!!!!" + readFile(filename));
- String truth = "%YAML:1.0\n!!!";
+ String truth = "%YAML:1.0\ndescriptorSize: 32\n";
assertEquals(truth, readFile(filename));
}
}
public void testRead() {
- KeyPoint point = new KeyPoint(55.775577545166016f, 44.224422454833984f, 16, 9.754629f, 8617.863f, 1, -1);
- List<KeyPoint> keypoints = Arrays.asList(point);
- Mat img = getTestImg();
- Mat descriptors = new Mat();
-
String filename = OpenCVTestRunner.getTempFileName("yml");
writeFile(filename, "%YAML:1.0\nnOctaves: 4\nnOctaveLayers: 2\nextended: 1\nupright: 0\n");
extractor.read(filename);
- extractor.compute(img, keypoints, descriptors);
- assertEquals(128, descriptors.cols());
+ assertEquals(128, extractor.descriptorSize());
}
public void testWrite() {