cv下的常用类、函数笔记(持续更新中)
2017-10-09 17:39
603 查看
最近发现有必要记录整理一下遇到的cv库里的函数,所以开了这一章。
1、LK光流法程序
参数一:img_show 要画哪副图
参数二:kp 每个圆的圆心位置
参数三:10 每个圆的半径(radius)
参数四:cv::Scalar(0,240, 0) 图像矩阵三通道赋值
参数五:1 所画的圆的外边缘宽度
引申出同类问题
此外,Scalar是对图像对应的多通道矩阵进行初始化赋值,例如:图像对应的矩阵元素为类型为CV_32F表示有2个通道,则[b]Scalar(1,3)就是对该矩阵进行初始化赋值。第一个通道全为1,第2个通道全为3。[/b]
2、
参数一:cvRound 一种数据处理函数,对double类型的数据进行四舍五入
参数二:kp.pt.y 特征点kp的点坐标pt的横坐标y
引申出同类问题
a、数据处理函数
floor 函数,向下取整
b、
OpenCV
2
3
4
data00是指向image第一行第一个元素的指针。
data10是指向image第二行第一个元素的指针。
data01是指向image第一行第二个元素的指针。
3、
函数作用:把彩色图转化成灰度图
参数一:color 待转化的原图片文件
参数二:gray 转化后的灰度图的文件名
参数三:cv作用域下的宏,COLOR BGR2GRAY =6
4、
这段代码的作用:建立一个图像矩阵——img_show,然后作为一张图片输出
第一行:新建一个图像矩阵img_show,参数设置为 行数图片color的两倍,列数和color一致,矩阵元素的数据类型为为三通道无符号数
第二行:步骤一:先在图像矩阵img_show 中开辟一块矩形区域(实际为图像矩阵的上半部分)
步骤二:把prev_color中的数据复制到开辟好的这部分区域中
第三行:把color中的数据复制到剩余的下半部分区域中
第四行:(for循环)模块——
步骤一:p是世界坐标系下位置已知的点,通过计算得到了该点在参考帧和当前帧中的像素坐标
步骤二:把得到的像素坐标的三个通道重新设置,绿色拉满
步骤三:在参考帧和当前帧画圆,以显示出已知点p的位置
最后一行:把已经设置好的img_show输出,输出对话框为result。
5、
移动窗口的位置——cv:moveWindow用法就是跟在imshow函数后面加一句就可以了,作用就是重新设定一下要显示的窗口的位置(如下所示)
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
下面是常用的cv类:
1、
vector < cv::Point3f >(空间点三维坐标)
2、
vector < cv::KeyPoint >(常用于图像特征点识别)
另外,恭喜通哥,新婚快乐
1、LK光流法程序
cv::circle(img_show, kp, 10, cv::Scalar(0,240, 0), 1);
参数一:img_show 要画哪副图
参数二:kp 每个圆的圆心位置
参数三:10 每个圆的半径(radius)
参数四:cv::Scalar(0,240, 0) 图像矩阵三通道赋值
参数五:1 所画的圆的外边缘宽度
引申出同类问题
OpenCV画椭圆、实心圆、凹多边形、线段、矩形
http://blog.csdn.net/lql0716/article/details/54980921此外,Scalar是对图像对应的多通道矩阵进行初始化赋值,例如:图像对应的矩阵元素为类型为CV_32F表示有2个通道,则[b]Scalar(1,3)就是对该矩阵进行初始化赋值。第一个通道全为1,第2个通道全为3。[/b]
2、
ushort d = depth.ptr<ushort> ( cvRound ( kp.pt.y ) ) [ cvRound ( kp.pt.x ) ]
参数一:cvRound 一种数据处理函数,对double类型的数据进行四舍五入
参数二:kp.pt.y 特征点kp的点坐标pt的横坐标y
引申出同类问题
a、数据处理函数
floor 函数,向下取整
b、
OpenCV Mat
数据类型指针ptr
的使用
cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600 uchar * data00 = image.ptr<uchar>(0); uchar * data10 = image.ptr<uchar>(1); uchar * data01 = image.ptr<uchar>(0)[1];1
2
3
4
解释:
定义了一个Mat变量image。data00是指向image第一行第一个元素的指针。
data10是指向image第二行第一个元素的指针。
data01是指向image第一行第二个元素的指针。
3、
cv::cvtColor ( color, gray, cv::COLOR_BGR2GRAY )
函数作用:把彩色图转化成灰度图
参数一:color 待转化的原图片文件
参数二:gray 转化后的灰度图的文件名
参数三:cv作用域下的宏,COLOR BGR2GRAY =6
4、
cv::Mat img_show ( color.rows*2, color.cols, CV_8UC3 ); prev_color.copyTo ( img_show ( cv::Rect ( 0,0,color.cols, color.rows ) ) ); color.copyTo ( img_show ( cv::Rect ( 0,color.rows,color.cols, color.rows ) ) ); for ( Measurement m:measurements ) { if ( rand() > RAND_MAX/5 ) continue; Eigen::Vector3d p = m.pos_world; Eigen::Vector2d pixel_prev = project3Dto2D ( p ( 0,0 ), p ( 1,0 ), p ( 2,0 ), fx, fy, cx, cy ); Eigen::Vector3d p2 = Tcw*m.pos_world; Eigen::Vector2d pixel_now = project3Dto2D ( p2 ( 0,0 ), p2 ( 1,0 ), p2 ( 2,0 ), fx, fy, cx, cy ); if ( pixel_now(0,0)<0 || pixel_now(0,0)>=color.cols || pixel_now(1,0)<0 || pixel_now(1,0)>=color.rows ) continue; float b = 0; float g = 250; float r = 0; img_show.ptr<uchar>( pixel_prev(1,0) )[int(pixel_prev(0,0))*3] = b; img_show.ptr<uchar>( pixel_prev(1,0) )[int(pixel_prev(0,0))*3+1] = g; img_show.ptr<uchar>( pixel_prev(1,0) )[int(pixel_prev(0,0))*3+2] = r; img_show.ptr<uchar>( pixel_now(1,0)+color.rows )[int(pixel_now(0,0))*3] = b; img_show.ptr<uchar>( pixel_now(1,0)+color.rows )[int(pixel_now(0,0))*3+1] = g; img_show.ptr<uchar>( pixel_now(1,0)+color.rows )[int(pixel_now(0,0))*3+2] = r; cv::circle ( img_show, cv::Point2d ( pixel_prev ( 0,0 ), pixel_prev ( 1,0 ) ), 4, cv::Scalar ( b,g,r ), 2 ); cv::circle ( img_show, cv::Point2d ( pixel_now ( 0,0 ), pixel_now ( 1,0 ) +color.rows ), 4, cv::Scalar ( b,g,r ), 2 ); } cv::imshow ( "result", img_show );
这段代码的作用:建立一个图像矩阵——img_show,然后作为一张图片输出
第一行:新建一个图像矩阵img_show,参数设置为 行数图片color的两倍,列数和color一致,矩阵元素的数据类型为为三通道无符号数
第二行:步骤一:先在图像矩阵img_show 中开辟一块矩形区域(实际为图像矩阵的上半部分)
步骤二:把prev_color中的数据复制到开辟好的这部分区域中
第三行:把color中的数据复制到剩余的下半部分区域中
第四行:(for循环)模块——
步骤一:p是世界坐标系下位置已知的点,通过计算得到了该点在参考帧和当前帧中的像素坐标
步骤二:把得到的像素坐标的三个通道重新设置,绿色拉满
步骤三:在参考帧和当前帧画圆,以显示出已知点p的位置
最后一行:把已经设置好的img_show输出,输出对话框为result。
5、
cv::imshow ( "image", img_show ); cv::moveWindow("image",1000,0);
移动窗口的位置——cv:moveWindow用法就是跟在imshow函数后面加一句就可以了,作用就是重新设定一下要显示的窗口的位置(如下所示)
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
下面是常用的cv类:
1、
vector < cv::Point3f >(空间点三维坐标)
2、
vector < cv::KeyPoint >(常用于图像特征点识别)
另外,恭喜通哥,新婚快乐
相关文章推荐
- 工作笔记(五):常用jquery函数以及操作,持续更新..
- cocos2d-js游戏设计常用函数笔记(持续更新) (2014-08-18 15:43:12)
- ORACLE数据库常用函数学习笔记(持续更新...)
- 常用函数及其使用格式(持续更新中.......)
- ACM Trick点&&常用操作记录(持续更新)(语言&&函数)
- Oracle常用函数(持续更新)
- iOS --- 总结Swift中常用的全局函数和extension(持续更新中)
- Oracle常用的函数和表达式(持续更新中...)
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
- matlab常用函数备忘录(持续更新)
- matlab常用函数备忘录(持续更新)
- javaScript封装的常用函数(持续更新中)
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
- pandas常用功能与函数介绍(结合实例,持续更新)
- 总结js常用函数和常用技巧(持续更新)
- 前端开发常用函数及小技巧(持续更新)
- Vertica的这些事<五>—— 关于vertica常用函数介绍(持续更新ing)
- PHP 常用 函数总结 持续更新中...
- [Python] Python学习笔记之常用模块总结[持续更新...]
- PHP常用的一些公共函数(持续更新)