opencv摄像机捕捉魔方画面进行颜色识别的问题,如题。

opencv摄像机捕捉魔方画面进行颜色识别的问题,如题。,第1张

首先魔方要买那种磨砂的减少反光的影响。其实也就是当光线太亮或者太暗色彩分量就变小了。

然后通过方法找到魔方的边界,然后将这个正方形部分截取出来处理。

后面就是一个面一个面的处理,将分成33共9个块,就是对应着9个色块。

下面就是对每个块的处理,去除其中的非色彩分量,就是这部分不参与后面的计算。

我曾经用过一个方法,就是通过颜色的值来区分,因为魔方有六种颜色。别的颜色基本没什么问题,只有红色与橙色有问题,由于魔方生产的时候,色彩并不是标准的。所以是不能用固定阈值来处理,也不能用图像的模版来处理,因为那样模版要做的太多了。

个人觉得的办法是,整个魔方所有色块一起处理,先处理其他的颜色,最后再处理红色与橙色,可能会更精确些。就是越靠近红色分量的9个色块作为红色,越靠近橙色分量的9个色块作为橙色。

直接对每个像素点判断即可,src是图像

IplImage src;

CvScalar s;

for(int i = 0;i < src->height;i++)

{

for(int j = 0;j < src->width;j++)

{

s = cvGet2D(src,i,j); // 获得像素值

if(sval[0]<50&&sval[1]<50&&sval[2]>200)

//注意这里的012对应的是bgr,范围的意思是防止光线的明暗影响,可以适当放宽,另外你也可以选择其他的颜色空间,可以直接取消明暗影响,比如HSV

{

sval[0]=0;

sval[1]=0;

sval[2]=255;

} //如果满足条件就设置为红色

else

{

sval[0]=0;

sval[1]=0;

sval[2]=0;

} //如果不满足就设置为黑色

cvSet2D(src,i,j,s); //设置像素

}

}

cvNamedWindow( "image", 1 );

cvShowImage("image",src); //显示出来

另外你说的定位是什么意思,是不是说像车牌那样做一个矩形框框起来?我这做过一个车牌定位的,如果是的话我可以发给你!或者把代码贴出来

以上就是关于opencv摄像机捕捉魔方画面进行颜色识别的问题,如题。全部的内容,包括:opencv摄像机捕捉魔方画面进行颜色识别的问题,如题。、求用opencv识别红色区域 并定位的具体流程!!!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9750568.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存