首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在打开的简历框中填入框

如何在打开的简历框中填入框
EN

Stack Overflow用户
提问于 2018-02-19 00:36:08
回答 1查看 105关注 0票数 3

好的,既然没有人回答,让我试着改变我的问题,如何去尝试识别这些盒子呢?

图中我要检测的地方

要获得以下信息:

我想要的照片

我遇到麻烦了,因为盒子里有白色字母。(我想)谁能提供一个解决方案吗?

我从简历开始,做一个简单的项目来学习。我在试着把盒子装进盒子里数一数。我正在检测边缘并进行阈值二进制inv。我得到了这个,我认为这是非常好的,我应该能够工作,

处理后的图片

在我继续检测形状后,我只找到了一个盒子,一个大盒子。

我的想法是: A)问题是里面的盒子没有“完成”B)线不是一个线段

但我读到的是,如果它检测到边缘,它应该看到它有4个,并检测为一个矩形。

这是一个代码

代码语言:javascript
复制
thresh = cv2.threshold(edges, 177, 255, cv2.THRESH_BINARY_INV)[1]

cv2.imshow("Image", thresh)
cv2.waitKey(0)

cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
sd = ShapeDetector()

在我迭代之后,试着用绿色画出它们的边缘

和我的形状检测器

代码语言:javascript
复制
class ShapeDetector:
def __init__(self):
    pass

def detect(self, c):
    print("ola")
    # initialize the shape name and approximate the contour
    shape = "unidentified"
    peri = cv2.arcLength(c, True)
    approx = cv2.approxPolyDP(c, 0.04 * peri, True)

    if len(approx) == 4:
        # compute the bounding box of the contour and use the
        # bounding box to compute the aspect ratio
        (x, y, w, h) = cv2.boundingRect(approx)
        ar = w / float(h)
        print( "Found one!")
        shape = "rectangulo"

    return shape

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 05:10:04

您应该使用诸如cv2.RETR_LIST (包含所有轮廓的简单列表)或cv2.RETR_TREE (层次结构中的所有轮廓)之类的东西,而不是cv2.RETR_EXTERNAL (仅检索外部轮廓)。

请参阅https://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html

编辑: RETR_TREE更复杂,但它提供了哪些轮廓在其他轮廓中的信息,因此您可以忽略其中一些轮廓。

如果您想要完美的矩形,则应该绘制boundingRect()的结果,而不是原始轮廓。

如果发现重叠的矩形,还可以添加更多条件来消除它们(例如,w和h应该介于最小值和最大值之间)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48853997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档