OpenCV440(以及340)曲线绘制工具

写在前面

前段时间在做基于点云库pcl的icp点云配准,自己改了下源码增加了一些参数,为方便观察每个不同参数组合下的结果,想直接将每次不同参数对应的结果曲线绘制并保存下来。于是在网上找到了相关的工作:
在这里插入图片描述
上图以及本文参考的源码出自:Matlab风格的Plot类for opencv
本文作者修改后的一个应用效果:
在这里插入图片描述
上述链接中的代码对于OpenCV340修改很少的几处便可直接使用:
https://github.com/jack-Dong/testPolt/
由于我要用到pcl,而当OpenCV340与我配置的pcl1.10.0一起使用时,会出现问题,于是将上述文章中的代码做了改动以令其在我之前配置好的OpenCV440+pcl1.10.0上运行:vs2019配置opencv+contrib-440 + PCL1.10.0

OpenCV340版本

OpenCV340想自己动手配置的话建议自行CSDN一下,有很多很详细的博客,在此不列举。
要是急用可以直接用我以前已经配好的文件:share_noel/OpenCV/OpenCV340/opencv.zip
https://blog.csdn.net/qq_41102371/article/details/125646840
直接能用的绘曲线图的代码(整个工程):share_noel/OpenCV/opencv_plot/202011opencv_plot.zip
https://blog.csdn.net/qq_41102371/article/details/125646840
愿意用c币支持的朋友也可在此下载:
opencv340.zip
202011opencv_plot.zip
(上述下载链接中csdn与百度网盘的文件完全相同,只不过网盘免费下载)
若运行不成功,请检查opencv文件是否放对位置。
打开项目属性-配置属性-调试-环境,看里面的PATH=D:\software\opencv\opencv\build\x64\vc15\bin;
检查有没有把下载的压缩包解压到了正确位置,如若放正确了的话,是存在D:\software\opencv\opencv\build\x64\vc15\bin的且里面是有opencv_world340d.dll的
在这里插入图片描述
在这里插入图片描述

OpenCV440版本

首先配置OpenCV440:vs2019配置opencv+contrib-440 + PCL1.10.0
不需要用到pcl的朋友可以忽略pcl的部分,并且下文也不会涉及pcl的使用。
像opencv和pcl这种较大开源库在vs的配置使用需要注意两个比较大的点,一是文件的准备,二是vs里面的属性表配置以及项目属性里面的-调试-环境(告诉vs在哪找dll)。
所以opencv和pcl的使用一般是一次性将属性表配置好,属性表里面包含了在哪找xxx.h、xxx.lib等信息,配置好基本是一劳永逸的,下次用直接将属性表复制进别的工程即可。
下面是已经配置好并代码已经调试好的整个工程:share_noel/OpenCV/opencv_plot/202011opencv440_plot.zip
https://blog.csdn.net/qq_41102371/article/details/125646840
愿意用c币支持的朋友也可在此下载:
202011opencv440_plot.zip
实现效果
在这里插入图片描述

修改部分函数调用

在上文提到的参考博客的代码中,一些函数与opencv440版本不兼容,所以需要修改。
现将几处典型的地方加以说明
添加文本函数:
opencv340:cvPutText()
https://docs.opencv.org/3.4.0/d9/df8/tutorial_root.html搜索cvputtext即可找到
在这里插入图片描述

/*
//cvPutText()函数定义
void cvPutText	(	CvArr * 	img,//传入要添加文字的图像
const char * 	text,//要添加的文字
CvPoint 	org,//添加的位置
const CvFont * 	font,//字体
CvScalar 	color //颜色
)
*/	
//调用例如:
cvPutText(this->Figure, ylabel_name.c_str(), cvPoint( x, y), &font, label_color);

在opencv440中对应cv::putText()函数
cv::putText()

/*
void cv::putText	(	InputOutputArray 	img,//传入要添加文字的图像
const String & 	text,//要添加的文字
Point 	org,//
int 	fontFace,//https://docs.opencv.org/4.4.0/d6/d6e/group__imgproc__draw.html#ga0f9314ea6e35f99bb23f29567fc16e11
double 	fontScale,//字体大小
Scalar 	color,//颜色
int 	thickness = 1,//线粗
int 	lineType = LINE_8,//线类型
bool 	bottomLeftOrigin = false //When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner.

)*/	
//调用:
cv::putText(cv::cvarrToMat(image), "202011 by Carlos_Lee", cvPoint(700, 70), CV_FONT_HERSHEY_SIMPLEX, 0.7, this->text_color);

可以看出,两个版本的函数传入参数的,类型是不同的,比如图像格式:CvArr *(opencv340)和InputOutputArray(opencv440),字符串:char (340)和const String(440)等等
其中opencv340的cvPutText()使用的图片格式是IplImage
image;
在opencv440的cv::putText()中使用需要转换成mat格式cv::cvarrToMat(image)
数据类型转换参考:
1、https://blog.csdn.net/fu_shuwu/article/details/77399835
2、https://blog.csdn.net/weixin_42638401/article/details/88866820
同理,在此列出已修改的函数

opencv340opencv440
cvPutText()cv::putText()
cvLine()cv::line()
cvCircle()cv::circle
cvRectangle()cv::rectangle()

最近在做icp算法相关的学习工作,为了方便观察不同参数下的MSE曲线和时间消耗,用pcl+ opencv440+绘制曲线,实现icp配准过程中每次迭代后两点云MSE的以及时间消耗曲线。再也不用把数据记录进文本然后观察密密麻麻的过程数据了,还是挺有用的。再次感谢原作者:Matlab风格的Plot类for opencv
蓝色是MSE,绿色是时间消耗
在这里插入图片描述

参考及感谢

Matlab风格的Plot类for opencv
https://blog.csdn.net/fu_shuwu/article/details/77399835
https://blog.csdn.net/weixin_42638401/article/details/88866820
vs2019配置opencv+contrib-440 + PCL1.10.0

边学边用,如有错漏,敬请指正
--------------------------------------------------------------------------------------------诺有缸的高飞鸟202011

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺有缸的高飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值