`

selectivesearch找词

 
阅读更多

根据selectivesearch 算法 加上iou 找图里面的汉字 -。-  干啥用大家都懂

更好的有 faster-rcnn 但是需要做深度学习什么的,而且也没那么多图片做深度学习。

# -*- coding: utf-8 -*-
import skimage.data
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import selectivesearch

rate = 0.2
mrate = 0.4

def main():

    # loading astronaut image
    #img = skimage.data.astronaut()
    img = plt.imread("D:/png/4.jpeg")

    # perform selective search
    img_lbl, regions = selectivesearch.selective_search(
        img, scale=500, sigma=0.9, min_size=10)

    candidates = set()
    for r in regions:
        # excluding same rectangle (with different segments)
        if r['rect'] in candidates:
            continue
        x, y, w, h = r['rect']
        if w >15 and w<60  and h>15 and h <60:
#        if h > 30 and h <300 and w>10 and w<100:
            candidates.add(r['rect'])
#        candidates.add(r['rect'])

    candidates = filter(list(candidates))
    # draw rectangles on the original image
    fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
    ax.imshow(img)
    for x, y, w, h in candidates:
        print( x, y, w, h)
        rect = mpatches.Rectangle(
            (x, y), w, h, fill=False, edgecolor='red', linewidth=1)
        ax.add_patch(rect)

    plt.show()

def filter(candidates):
    candidates.sort(key=lambda x: (x[2]*x[3]) ,reverse=True)
    fs = set()
    while len(candidates) > 0:
        s = []
        ious = []
        for v in candidates:
            if 0 == len(s):
                s = v
                ious.append(0.)
                continue
            ious.append(IOU(s,v))

        maxRate = 0.
        while True :
            maxRate = max(ious)
            if maxRate > mrate:
                candidates.pop(ious.index(maxRate))
                ious.pop(ious.index(maxRate))
            else:
                break
        index = 0
        if maxRate > rate:
            index = ious.index(maxRate)
        i=0
        for v in ious:
            if i == index :
                fs.add(s)
            if v > rate :
                candidates.pop(i)
                i = i-1
            i = i + 1
        fs.add(candidates[0])
        candidates.pop(0)
    return fs

def IOU (vec1, vec2):
    w = min(vec1[0]+vec1[2], vec2[0]+vec2[2]) - max(vec1[0], vec2[0])
    h = min(vec1[1]+vec1[3], vec2[1]+vec2[3]) - max(vec1[1], vec2[1])
    if w < 0 or h < 0:
        return 0.
    return float(w) * float(h) /(float(vec1[2]*vec1[3]))



if __name__ == "__main__":

     main()

原始图片:

 

 

运算之后

 

 

左边的坐标是 x, y, w, h 坐标系。

 

  • 大小: 5.8 KB
  • 大小: 78.9 KB
分享到:
评论

相关推荐

    Python+OpenCV实现Selective Search算法

    ### Python+OpenCV实现Selective Search算法 #### 一、Selective Search简介 Selective Search是一种用于对象检测的任务中的候选区域提取算法,它可以生成一组矩形框,这些矩形框可能包含图像中的对象。它通过一...

    selectiveSearch C++实现

    在提供的文件列表中,`SelectiveSearch.sln`是Visual Studio的解决方案文件,用于组织和编译项目;而`SelectiveSearch`可能是源代码文件或库文件,包含了Selective Search算法的具体实现。开发者可以借助这些文件...

    Selective Search算法---候选区域搜索.zip

    Selective Search算法,也被称为快速选择性搜索,是计算机视觉领域中的一个重要方法,主要用于目标检测的预处理步骤。它通过生成一系列可能包含目标的区域提议,为后续的目标检测算法(如R-CNN、Fast R-CNN、Faster ...

    SelectiveSearch2

    《SelectiveSearch2:基于图的图像分割技术在C++中的实现》 SelectiveSearch2是一个C++实现的项目,源于Selective Search算法,该算法是计算机视觉领域中用于图像分割的重要技术。它主要应用于图像理解、物体识别和...

    Selective Search for Object Recognition

    该软件可以在以下网址获取:[http://disi.unitn.it/~uijlings/SelectiveSearch.html](http://disi.unitn.it/~uijlings/SelectiveSearch.html)。 #### 结论 选择性搜索是一种创新的方法,它解决了对象识别中一个关键...

    selective search

    ### Selective Search 图像识别算法详解 #### 一、引言 Selective Search 是一种用于图像分割和目标检测的重要算法,其基本思想是通过逐步合并相似的图像区域来生成候选对象区域,进而帮助后续的计算机视觉任务如...

    Selective-Search-master_SelectiveSearch_

    在“Selective-Search-master_SelectiveSearch_”这个项目中,我们看到的是Selective Search算法的一种实现。 Selective Search的基本流程分为以下几个步骤: 1. **色彩、纹理和大小空间分段**:首先,算法会将...

    selective search算法提取proposals

    **选择性搜索(Selective Search)算法** 选择性搜索(Selective Search)是一种在图像中生成对象提案(object proposals)的方法,广泛应用于目标检测领域,尤其是在基于区域的深度学习模型如Fast R-CNN、Faster R...

    Selective Search for Object Recognition算法详解

    Selective Search for Object Recognition论文中OpenCV2.4.13+VS2015完全实现版。作者对其中加入了大量代码注释,甚至每个变量的含义都解释得非常清晰。代码结构完整,可以让读者更好的理解Selective Search算法。...

    Simple Python script to compute Selective Search proposals in

    【标题】"Simple Python script to compute Selective Search proposals in Matlab" 这个标题暗示了一个使用Python编写的脚本,其目的是在Matlab环境中实现Selective Search算法,该算法主要用于图像对象检测和分割...

    Selective search笔记

    Selective Search是一种计算机视觉技术,主要用于图像分割和目标检测领域,其主要目的是生成一系列候选区域,这些区域被认为可能包含感兴趣的对象。这项技术的核心在于快速而有效地生成高质量的搜索区域,为后续的...

    Selective-Search-边框生成.7z

    # Selective-Search算法 # 输入: rgb图片 # 输出: 预选框-candidate-box # 第1步: 利用Graph-Based Segmentation算法,将图片过度分割 # 第2步: 创建字典集,每个子字典,含8个键值对 # 第3步: 邻近匹配字典...

    selectivesearch.py

    本文件是对Selective Search的代码实现,结合本文对该算法的理解,里面都是中文注释,很容易理解

    基于opencv实现的目标检测 - SelectiveSearch算法源代码

    **基于OpenCV实现的目标检测——SelectiveSearch算法源代码解析** 目标检测在计算机视觉领域中扮演着至关重要的角色,它能够帮助我们识别图像中的特定对象。R-CNN(Region with Convolutional Neural Networks)...

    selectivesearch.zip

    《选择性搜索(Selective Search)在目标检测与分割中的应用》 选择性搜索(Selective Search)是一种在图像处理和计算机视觉领域广泛使用的区域提议方法,主要用于目标检测和目标分割任务。这种方法通过组合图像中...

    基于选择性搜索(Selective Search)选择候选区域.zip

    `SelectiveSearch.py`是Python代码实现的选择性搜索算法。在这个文件中,我们可以期待看到如下的关键点: 1. **图像预处理**:将原始图像转换为适合进行超像素分割的格式,可能包括调整大小、归一化等操作。 2. **...

    Selective Search for Object Recognition-附件资源

    Selective Search for Object Recognition-附件资源

Global site tag (gtag.js) - Google Analytics