判断两个矩形是否相交的4个方法

本文总结了四种判断两个矩形是否相交的方法,包括基于边界坐标比较、直线交叉判断以及矩形重心距离的条件。提供了具体的C++实现代码示例。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/cxf7394373/article/details/7535105

最近在用opencv寫一個文本定位的程序,獲取到字符輪廓之後需要進行合並,涉及到判斷矩形是否相交的問題,記得去年去三星通信研究院面試同樣問到了這個問題,如何判斷兩條線段是否相交,如何判斷兩個矩形是否相交。以前寫過一篇如何判斷線段相交的問題,上網查了一些方法,在這裡做一下後一個問題的總結:

方法一:假定矩形是用一對點表達的(minx,miny)(maxx,   maxy) ,那麼兩個矩形rect1{(minx1,miny1)(maxx1,   maxy1)},       rect2{(minx2,miny2)(maxx2,   maxy2)}   相交的結果一定是個矩形,構成這個相交矩形rect{(minx,miny)(maxx, maxy)}的點對坐標是:   

  minx   =   max(minx1,   minx2)   
  miny   =   max(miny1,   miny2)   
    maxx   =   min(maxx1,   maxx2)   
    maxy   =   min(maxy1,   maxy2)   
如果兩個矩形不相交,那麼計算得到的點對坐標必然滿足   
  minx   >   maxx   或者     miny   >   maxy   
[cpp]  view plain copy
  1. <pre name="code" class="cpp">bool CPreprocess::crossAlgorithm1(CvRect r1,CvRect r2)  
  2. {  
  3.     int nMaxLeft = 0;  
  4.     
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值