博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
寻找精密光学标定板上的矩形(网友提问)
阅读量:6813 次
发布时间:2019-06-26

本文共 1241 字,大约阅读时间需要 4 分钟。

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

问题:
对于这样的图片
如何寻找上面的矩形
 
思路:
这个矩形的面积在所有的图像中是最大的(除去整个图形轮廓以外),可以尝试从这个方面入手,再加上一些鲁壮的方法
 
 
#
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

转载地址:http://gezzl.baihongyu.com/

你可能感兴趣的文章
HP服务器 收集的日志
查看>>
是否是适合您的云计算解决方案?
查看>>
我的友情链接
查看>>
Linux 监控工具之Cacti使用详解(三)
查看>>
数据结构(C语言版)第四章:链表
查看>>
python核心编程:学习笔记4--函数和函数式编程
查看>>
CentOS7基于NFS服务的文件共享
查看>>
Linux passwd文件被清空
查看>>
Python OpenCV学习笔记之:图像阈值操作
查看>>
7月第1周中国.COM总量净增5.1万个 美国净减5.3万
查看>>
国内域名商.wang总量TOP10:易名中国跻身上榜
查看>>
5月钓鱼网站简报:共处理钓鱼网站2483个 环比下降
查看>>
10月国内网民上网时间分布:晚上8点出现峰值6.42%
查看>>
Echarts 基本设置 设置图表位置
查看>>
AliOS Things网络适配框架 - SAL
查看>>
Hystrix之外健壮微服务的新选择:Sentinel 发布首个生产版本
查看>>
数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组
查看>>
缓存服务varnish
查看>>
配置电信网通双线双IP的解决办法(Linux Ip Route2,基于源地址进行路由选择)
查看>>
Python常用模块汇总
查看>>