OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 4805|回复: 2

指针表识别的一些问题

[复制链接]
发表于 2011-5-17 21:50:28 | 显示全部楼层 |阅读模式
我现在在用arm11 6410利用opencv做指针表的识别,我的思路是利用opencv,找出表盘上最长的一根直线作为指针,然后求直线的斜率作为指针的倾斜角。现在最长的直线已找到,不过遇到以下几个问题:
  1.图像采集问题  
  我是在arm11上运行opencv,本来想利用opencv直接控制摄像头呢,可是一直控制不明白,就直接用V4L2了,arm11是自带jpeg编码器的 我现在已经通过摄像头采集图像,然后通过jpeg编码器进行编码。我现在的做法是通过fwrite()函数把编码后的数据写成jpeg格式的图像文件,再通过cvLoadeImage把jpeg图像的数据读进来。可是写文件按和读文件太浪费时间,opencv能不能直接从图像缓冲区里把数据直接读进来啊?我试着直接把数据赋给ipIimage->date,然后cvSaveImage()保存图像,可是图像是一片黑。是不是因为ipIimage->date里面存的是图像数据,而我把图像缓冲区的全部数据都复制进去额原因呢?因为图像缓冲区里的数据既有jpeg格式的数据头又有数据?不知道是什么原因。
2.数据不稳定
  我是利用以下的代码来算斜率的
  lines = cvHoughLines2( canny_dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 45, 45, 4);

    for( i = 0; i < lines->total; i++ )
    {
               
        CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
        kp = (line[1].y-line[0].y)/(line[1].x-line[0].x);
        if(kp != 0)
        {
               
                kp = ((line[1].y+line[0].y)/2- 278)/((line[1].x+line[0].x)/2 - 240);
                k = k + kp;
                cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 1, CV_AA, 0 );
        }
    }
        k = k/i;
        printf(&quot;k = %f\n&quot;,k);

这里的指针表的指针的圆心坐标是(240,278),可是输出的斜率一直不稳定,就是对同一个表头指针不动的时候,连续拍照识别,输出的k差别很大。
哪位同仁在做相同的项目,请指教啊?我的QQ:420890901
回复

使用道具 举报

发表于 2011-12-6 20:46:36 | 显示全部楼层

指针表识别的一些问题

做什么项目 我做过 不过直接用c做的
回复 支持 反对

使用道具 举报

发表于 2012-2-14 14:02:30 | 显示全部楼层

指针表识别的一些问题

是不是噪声太大了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-18 20:52 , Processed in 0.009185 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表