如何在文件中存储描述符
OpenCV: How to store descriptors in a file?
我想使用OpenCV的功能检测图像中的对象。我有一些包含这类物体的图像。我搜索其中的关键点,并将这些关键点的描述符存储在物体的轮廓中。基于这些描述符,我想在它们与可能包含或可能不包含对象的图像中的关键点描述符之间进行匹配。
我的问题是在某些情况下(例如:描述符的类型为CV_8U,对于其他类型(例如:SIFT)它们是CV_32F。如果我想把它们存储在一个文件中如果我这样做了:
fileStream << descriptors.ptr<uchar>(rowIdx)[colIdx] << ";";
CV_32F的不确定(但没有错误),其中大多数是255
。如果我这样做了:
fileStream << descriptors.ptr<float>(rowIdx)[colIdx] << ";";
CV_8U被存储为4.00897e-07
或5.14004e+19
,这也是不可以的。
你建议我怎么做?如果你知道更好的解题方法,请告诉我。
你必须这样做:
cv::FileStorage fsWrite("YourDescriptors.txt", FileStorage::WRITE );
fsWrite["descriptors"] << descriptors;
fsWrite.release();
并从文件中读取:
cv::FileStorage fsRead("YourDescriptors.txt", FileStorage::READ );
fsRead["descriptors"] >> descriptors;
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用VerQueryValue检索应用程序的文件描述
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 如何将来自不同图像的多个描述符存储在C++和OpenCV中的向量向量中
- OpenCV代码将存储在列表中的描述符与新的图像描述符进行比较
- BGL:使用绑定属性来存储另一个顶点的顶点描述符
- 如何在文件中存储描述符