求用opencv识别红色区域 并定位的具体流程!!!

求用opencv识别红色区域 并定位的具体流程!!!,第1张

直接对每个像素点判断即可,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); //显示出来

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

//因为要计算H-S的直方图,所以需要得到一个HSV空间的图像

cvtColor(srcImage, hsvImage, CV_BGR2HSV);

imshow("HSV空间的原图", hsvImage);

//为计算直方图配置变量

//首先是需要计算的图像的通道,就是需要计算图像的哪个通道(bgr空间需要确定计算 b或g货r空间)

int channels[] = { 0, 1 };

//然后是配置输出的结果存储的 空间 ,用MatND类型来存储结果

MatND dstHist;

//接下来是直方图的每一个维度的 柱条的数目(就是将数值分组,共有多少组)

//如果这里写成int histSize = 256; 那么下面调用计算直方图的函数的时候,该变量需要写 &histSize

int histSize[] = { 30, 32 };

//最后是确定每个维度的取值范围,就是横坐标的总数

//首先得定义一个变量用来存储 单个维度的 数值的取值范围

float HRanges[] = { 0, 180 };

float SRanges[] = { 0, 256 };

const float ranges[] = { HRanges, SRanges };

-

以上就是关于求用opencv识别红色区域 并定位的具体流程!!!全部的内容,包括:求用opencv识别红色区域 并定位的具体流程!!!、opencv怎样求直方图变化最陡峰值的位置、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存