这是一个关于使用OpenCV在C中检测图像中文本的项目。该过程是检测对应轮廓内外的颜色,其方法是在等距位置的轮廓上绘制法线,并在法线端点的相应位置提取像素颜色。
我试图用下面的代码实现它,但它不起作用。我是说,它画的是法线,但不是等距的。
for( ; contours!=0 ; contours = contours->h_next )
{
CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 );
cvDrawContours( cc_color, contours, color, CV_RGB(0,0,0), -1, 1, 8, cvPoint(0,0) );
ptr = contours;
for( i=1; i<ptr->total; i++)
{
p1 = CV_GET_SEQ_ELEM( CvPoint, ptr, i );
p2 = CV_GET_SEQ_ELEM( CvPoint, ptr, i+1 );
x1 = p1->x;
y1 = p1->y;
x2 = p2->x;
y2 = p2->y;
printf("%d %d %d %d\n",x1,y1,x2,y2);
draw_normals(x1,y1,x2,y2);
}
}
那么有没有办法找到一个轮廓的长度,这样我就可以把它除以我想画的法线的数量。提前谢谢。
编辑:draw_normal函数将传递给它的两点之间的法线绘制为参数。
是的,您可以使用OpenCV标准函数
cvarcLength()
找到轮廓的长度。Check Documentation here.
相关问题 更多 >
编程相关推荐