convert bitset descriptor - cv::Mat
参考https://blog.csdn.net/magicyang87/article/details/7246771
1.bitset转opencv cv::Mat
注意
(1)Mat 的列为32列,类型为uchar
(2)BRIEF::bitset 的长度为256
(3)每8个构成一个uchar
这个测试ok
vector<BRIEF::bitset> temp_brief_descriptors;
extractor(image, keypoints, temp_brief_descriptors);
brief_descriptors_mat=Mat::zeros(brief_descriptors.size(),32,CV_8UC1);
int row=0;for(iter = temp_brief_descriptors.begin(); iter!=temp_brief_descriptors.end();iter++){BRIEF::bitset bits=*iter;for (int i = 0; i < 32; i += 8){char ch;for (int j = 0; j < 8; ++j){if (bits.test(i + j)) // 第i + j位为1ch |= (1 << j);elsech &= ~(1 << j);}brief_descriptors_mat.at<uchar>(row, i)=(uchar)ch;}row++;}
void convert_bitset_to_Mat(vector<BRIEF::bitset> temp_brief_descriptors,cv::Mat& out_brief_descriptors_mat)
{//2.convert bitset to Matout_brief_descriptors_mat=cv::Mat::zeros(temp_brief_descriptors.size(),32,CV_8UC1);int row=0;for(vector<BRIEF::bitset> :: iterator iter = temp_brief_descriptors.begin(); iter!=temp_brief_descriptors.end();iter++){BRIEF::bitset bits=*iter;for (int i = 0; i < 32; i++){char ch=' ';int n_offset=i*8;for (int j = 0; j < 8; j++){if (bits.test(n_offset + j)) // 第i + j位为1ch |= (1 << j);elsech &= ~(1 << j);}out_brief_descriptors_mat.at<uchar>(row, i)=(uchar)ch;}row++;}}
2.opencv cv::Mat转bitset
这段代码测试有问题!找不出原因!
//1.convert Mat to bitsetfor(int i=0;i<brief_descriptors_mat.rows;i++){BRIEF::bitset bits;bits.resize(256);bits.reset();for (int j = 0; j < 32; j ++){char ch=(char) brief_descriptors_mat.at<uchar>(i, j);int n_offset = j * 8;for (int k = 0; k < 8; ++k){bits.set(n_offset + k, ch & (1 << k));}}brief_descriptors.push_back(bits);}
convert bitset descriptor - cv::Mat相关推荐
- OpenCV【零】—————cv::Mat——Mat对象创建方法
OpenCV (一)--Mat对象创建方法 目录 OpenCV (一)--Mat对象创建方法 1. cv::Mat优点及原理(本质类) 2. Mat类拷贝及对象的创建方法 3. Mat 对象元素的高效 ...
- 深入了解cv::Mat
一.代码实现 cv::Mat类是用来存放图像(以及其他矩阵数据)的数据结构.在所有的OpenCV类和函数中,这个数据结构具有核心地位. 上代码: #include <iostream>#i ...
- 【FFmpeg】使用sws_scale将AVFrame转换后的图像数据放入cv::Mat中
1.方法一,伪代码如下 cv::Mat mat; AVFrame avFrame; const int stride[] = {static_cast<int>(mat.step[0])} ...
- 【OpenCV】正确创建用于保存YUV420P格式的cv::Mat
1.问题描述 cv::Mat保存RGB24或BRG24格式时,传入宽.高和格式类型CV_8UC3就行了:今天在创建cv::Mat用来保存YUV420P时,有点懵圈了,因为类型是CV_8UC1,直接传宽 ...
- 【OpenCV】cv::Mat和std::vector之间的相互转换
Mat转换成Vector 以vector 为例,其它模型类似 vector getVector(const Mat & a) { Mat b; a.convertTo(b, CV_64F); ...
- cv::Mat使用笔记
1. 构造 无参数构造方法 Mat::Mat() 创建行数为 rows,列数为 col,类型为 type 的图像 Mat::Mat(int rows, int cols, int type) 创建大小 ...
- 错误 LNK2019 无法解析的外部符号 “public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray
错误 LNK2019 无法解析的外部符号 "public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_Output ...
- Layout of the output array img is incompatible with cv::Mat (step[ndims-1] !
Layout of the output array img is incompatible with cv::Mat (step[ndims-1] https://blog.csdn.net/tqc ...
- 【opencv】4.初始化Mat的方式、访问cv::Mat中的某个元素
可以参考:https://www.cnblogs.com/guoben/p/12728390.html 方法1: cv::Mat img_1 = cv::Mat::zeros(cv::Size(col ...
- 【OpenCV3】cv::Mat中的数据按行列写入txt文件中
在使用opencv进行图像处理的过程中,经常会涉及到将文件中的数据读入到cv::Mat中,或者将cv::Mat中的数据写入到txt文件中. 下面就介绍一种我常用的将cv::Mat中的数据写入到txt文 ...
最新文章
- 怎样修改Ubuntu的root帐户密码并使用root登录
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
- How to make app start automatically When the application starts
- c++同一屏幕输出多种颜色字体
- SpringBoot整合MongoDB(实现一个简单缓存)
- 将ALV GRID中改变的值更新到ALV内表中
- 面试官问我:如何解决ABA问题?我给出接近满分的回答
- 项亮 陈义 王益《推荐系统实践》
- 门户网站服务器迁移,云服务器怎么迁移网站
- [蓝桥杯][2018年第九届真题]全球变暖
- java 异常处理 简书_Java基础知识8-异常处理
- 关于url传参中文乱码问题
- 万豪国际数据再遭泄露影响520万客户,两名员工账户为突破口
- 手机端与pc端页面html5,浅谈pc和移动端的响应式的使用
- Object-C学习(一)——类别的创建、实现及调用
- react 动态获取数据
- 【axure手机原型】iOS应用设计要点总结
- MATLAB读取图像相关的一些操作
- 罗永浩:一个极端个人理想主义的创业者
- 奇趣分享综合趣事百科文章类型discuz模板