这是关于在C中使用OpenCV检测图像中文本的项目.该过程是检测相应轮廓内外的颜色,并且这样做的方法是在等间距位置绘制轮廓上的法线并提取法线端点的相应位置的像素颜色.
我试图使用以下代码实现这一点,但它不起作用.我的意思是,它绘制法线但不是和等间隔的方式.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
那么有没有办法找到轮廓的长度,以便我可以将它除以我想要绘制的法线数.提前致谢.
编辑:draw_normal函数绘制传递给它的两个点之间的法线作为参数.