寻找精密光学标定板上的矩形(网友提问)

简介: 这道题目来源于网友问答,采用博客方式回答比较容易说明。问题:对于这样的图片如何寻找上面的矩形 思路:这个矩形的面积在所有的图像中是最大的(除去整个图形轮廓以外),可以尝试从这个方面入手,再加上一些鲁壮的方法  #include "stdafx.

这道题目来源于网友问答,采用博客方式回答比较容易说明。

问题:
对于这样的图片
如何寻找上面的矩形
 
思路:
这个矩形的面积在所有的图像中是最大的(除去整个图形轮廓以外),可以尝试从这个方面入手,再加上一些鲁壮的方法
 
 
# include  "stdafx.h"
# include  <opencv2 /opencv.hpp >
# include  "GOCVHelper.h"
# include  <iostream >
using  namespace cv;
using  namespace std;
 
int main(  int argc,  const  char * * argv )
{
    Mat src  = imread( "card.png",IMREAD_COLOR);
    Mat gray;
     int imax  =  0//代表最大轮廓的序号
     int imaxcontour  =  - 1//代表最大轮廓的大小
    std : :vector <std : :vector <Point >>contours;    
    cvtColor(src,gray,COLOR_BGR2GRAY);
    threshold(gray,gray, 100, 255,THRESH_OTSU);
    bitwise_not(gray,gray); // 白色代表有数据
     //寻找轮廓
    findContours(gray,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
     //冒泡排序,由大到小排序
    VP vptmp;
     for( int i = 1;i <contours.size();i ++){
         for( int j =contours.size() - 1;j > =i;j --){
             if( contourArea(contours[j]) > contourArea(contours[j - 1])){    
                 //swap
                vptmp  = contours[j - 1];
                contours[j - 1= contours[j];
                contours[j]  = vptmp;
            }
        }
    }
     //找到最后结果的时候,添加一些判断
     for ( int i  =  0;i <contours.size();i ++)
    {
         if (contourArea(contours[i])  < (src.rows  * src.cols) / 8 )
        {
            drawContours(src,contours,i,Scalar( 0, 0, 255), - 1);
             break;
        }
    }
    imshow( "结果",src);
    waitKey();
     return  0;
}
 
结果:
 
小结:
当然这里只是对最简单的模板图片进行了处理。如果在实际的摄像机拍摄的过程中,肯定会有其他的干扰,需要区别对待。

 

目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
物联网 Linux Android开发
圆曾经的小车梦,造一台智能小车(一)
圆曾经的小车梦,造一台智能小车(一)
97 1
Threejs实现模拟河流,水面水流,水管水流,海面
Threejs实现模拟河流,水面水流,水管水流,海面
2096 0
Threejs实现模拟河流,水面水流,水管水流,海面
|
3月前
|
数据处理
大学物理-实验篇(二)——用分光计测定三棱镜的折射率(光:特定频段电磁波、光线在介质界面折射、平行光与凸透镜)
大学物理-实验篇(二)——用分光计测定三棱镜的折射率(光:特定频段电磁波、光线在介质界面折射、平行光与凸透镜)
49 0
|
4月前
|
机器人
[贴装专题] 基于多目视觉的手眼标定
[贴装专题] 基于多目视觉的手眼标定
58 0
|
传感器 IDE 开发工具
圆曾经的小车梦,造一台智能小车(二)
圆曾经的小车梦,造一台智能小车(二)
117 1
|
机器学习/深度学习 传感器 算法
基于matlab模拟夫郎费禾衍射、双缝干涉、平面光栅衍射、单缝衍射光学仿真
基于matlab模拟夫郎费禾衍射、双缝干涉、平面光栅衍射、单缝衍射光学仿真
|
传感器 机器学习/深度学习 监控
全身追踪、不怕遮挡,CMU两位华人做了个基于WiFi信号的DensePose
全身追踪、不怕遮挡,CMU两位华人做了个基于WiFi信号的DensePose
129 0
|
机器学习/深度学习 人工智能 算法
将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
100 0
|
编解码 固态存储 计算机视觉
车距+车辆+车道线+行人检测(毕业设计,附代码)
车距+车辆+车道线+行人检测(毕业设计,附代码)
125 0
|
数据挖掘
大学物理实验-居家实验1-利用单摆测量重力加速度
大学物理实验-居家实验1-利用单摆测量重力加速度
363 0
大学物理实验-居家实验1-利用单摆测量重力加速度