mirror of
https://github.com/opencv/opencv.git
synced 2024-11-29 13:47:32 +08:00
Implemented read/write methods for BriefDescriptorExtractor class
This commit is contained in:
parent
28732d4300
commit
13185ad8f7
@ -2052,6 +2052,9 @@ public:
|
|||||||
// bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.
|
// bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.
|
||||||
BriefDescriptorExtractor( int bytes = 32 );
|
BriefDescriptorExtractor( int bytes = 32 );
|
||||||
|
|
||||||
|
virtual void read( const FileNode& );
|
||||||
|
virtual void write( FileStorage& ) const;
|
||||||
|
|
||||||
virtual int descriptorSize() const;
|
virtual int descriptorSize() const;
|
||||||
virtual int descriptorType() const;
|
virtual int descriptorType() const;
|
||||||
|
|
||||||
|
@ -188,6 +188,31 @@ int BriefDescriptorExtractor::descriptorType() const
|
|||||||
return CV_8UC1;
|
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
|
void BriefDescriptorExtractor::computeImpl(const Mat& image, std::vector<KeyPoint>& keypoints, Mat& descriptors) const
|
||||||
{
|
{
|
||||||
// Construct integral image for fast smoothing (box filter)
|
// Construct integral image for fast smoothing (box filter)
|
||||||
|
@ -69,27 +69,20 @@ public class BRIEFDescriptorExtractorTest extends OpenCVTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testRead() {
|
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");
|
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.read(filename);
|
||||||
|
|
||||||
extractor.compute(img, keypoints, descriptors);
|
assertEquals(64, extractor.descriptorSize());
|
||||||
assertEquals(128, descriptors.cols());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testWrite() {
|
public void testWrite() {
|
||||||
String filename = OpenCVTestRunner.getTempFileName("xml");
|
String filename = OpenCVTestRunner.getTempFileName("xml");
|
||||||
|
|
||||||
extractor.write(filename);
|
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));
|
assertEquals(truth, readFile(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,9 +90,8 @@ public class BRIEFDescriptorExtractorTest extends OpenCVTestCase {
|
|||||||
String filename = OpenCVTestRunner.getTempFileName("yml");
|
String filename = OpenCVTestRunner.getTempFileName("yml");
|
||||||
|
|
||||||
extractor.write(filename);
|
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));
|
assertEquals(truth, readFile(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,18 +72,12 @@ public class SURFDescriptorExtractorTest extends OpenCVTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testRead() {
|
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");
|
String filename = OpenCVTestRunner.getTempFileName("yml");
|
||||||
writeFile(filename, "%YAML:1.0\nnOctaves: 4\nnOctaveLayers: 2\nextended: 1\nupright: 0\n");
|
writeFile(filename, "%YAML:1.0\nnOctaves: 4\nnOctaveLayers: 2\nextended: 1\nupright: 0\n");
|
||||||
|
|
||||||
extractor.read(filename);
|
extractor.read(filename);
|
||||||
|
|
||||||
extractor.compute(img, keypoints, descriptors);
|
assertEquals(128, extractor.descriptorSize());
|
||||||
assertEquals(128, descriptors.cols());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testWrite() {
|
public void testWrite() {
|
||||||
|
Loading…
Reference in New Issue
Block a user