python 实物识别_RoboMaster视觉教程(9)风车能量机关识别2

之前说能量机关的教程有很多了打算不写了,但是总有同学来问,想了想还是写一下吧。

风车能量机关我只做了识别,因为准备分区赛的时候没有实物可以测试就一直搁置了,之后复活赛视觉的打击和预测都是学弟们做的。所以如果问我预测方面的事我也只能给个大概的方向,因为毕业后就没有再做这个了。

风车能量机关识别的示例代码我放在了我的GitHub

https://github.com/hejiangda/RM19windmillDemo

有需要的可以自行下载,觉得有帮助的话可以点个赞给项目加个星。

图像预处理

和之前识别装甲板一样,首先需要把我们要的颜色保留不要的去除。通过红蓝颜色通道互减可以方便的得到符合条件的二值图。

//分割颜色通道vector<Mat> imgChannels;split(srcImage,imgChannels);//获得目标颜色图像的二值图#ifdef REDMat midImage=imgChannels.at(2)-imgChannels.at(0);#endif#ifndef REDMat midImage=imgChannels.at(0)-imgChannels.at(2);#endif

这里说一下在 opencv c++ 中 Mat 之间是可以直接用-号相减的,而且如果减完后对应的像素点是负值的话会设为0,而在python中用-减完后如果像素值为负不会归零,而是类似于溢出的那种效果,也就是会变成255加上那个负数。在 c++ 中不会出现这样的问题。

//二值化,背景为黑色,图案为白色//用于查找扇叶threshold(midImage2,midImage2,100,255,CV_THRESH_BINARY);

在灰度图上进行二值化,得到的图片效果:

cf628788bf4e8abf814d13dccbd4ae35.png

可以看到箭头之间有空隙,如果直接进行轮廓查找的话会得到许多小轮廓而不能把整个作为一个轮廓,所以需要对图片进行膨胀操作。腐蚀和膨胀都是针对于白色区域而言的,腐蚀就是白色区域减少,膨胀就是白色区域增加。

//膨胀int structElementSize=2;

Mat element=getStructuringElement(MORPH_RECT,Size(2*structElementSize+1,2*structElementSize+1),Point(structElementSize,structElementSize));

dilate(midImage2,midImage2,element);

膨胀后可以看到箭头都连在一起了:

4318eef83bf0ba0997eaa8031af8d4a3.png

之后还要进行形态学闭

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值