根据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 坐标系。
相关推荐
### Python+OpenCV实现Selective Search算法 #### 一、Selective Search简介 Selective Search是一种用于对象检测的任务中的候选区域提取算法,它可以生成一组矩形框,这些矩形框可能包含图像中的对象。它通过一...
在提供的文件列表中,`SelectiveSearch.sln`是Visual Studio的解决方案文件,用于组织和编译项目;而`SelectiveSearch`可能是源代码文件或库文件,包含了Selective Search算法的具体实现。开发者可以借助这些文件...
Selective Search算法,也被称为快速选择性搜索,是计算机视觉领域中的一个重要方法,主要用于目标检测的预处理步骤。它通过生成一系列可能包含目标的区域提议,为后续的目标检测算法(如R-CNN、Fast R-CNN、Faster ...
《SelectiveSearch2:基于图的图像分割技术在C++中的实现》 SelectiveSearch2是一个C++实现的项目,源于Selective Search算法,该算法是计算机视觉领域中用于图像分割的重要技术。它主要应用于图像理解、物体识别和...
该软件可以在以下网址获取:[http://disi.unitn.it/~uijlings/SelectiveSearch.html](http://disi.unitn.it/~uijlings/SelectiveSearch.html)。 #### 结论 选择性搜索是一种创新的方法,它解决了对象识别中一个关键...
### Selective Search 图像识别算法详解 #### 一、引言 Selective Search 是一种用于图像分割和目标检测的重要算法,其基本思想是通过逐步合并相似的图像区域来生成候选对象区域,进而帮助后续的计算机视觉任务如...
在“Selective-Search-master_SelectiveSearch_”这个项目中,我们看到的是Selective Search算法的一种实现。 Selective Search的基本流程分为以下几个步骤: 1. **色彩、纹理和大小空间分段**:首先,算法会将...
**选择性搜索(Selective Search)算法** 选择性搜索(Selective Search)是一种在图像中生成对象提案(object proposals)的方法,广泛应用于目标检测领域,尤其是在基于区域的深度学习模型如Fast R-CNN、Faster R...
Selective Search for Object Recognition论文中OpenCV2.4.13+VS2015完全实现版。作者对其中加入了大量代码注释,甚至每个变量的含义都解释得非常清晰。代码结构完整,可以让读者更好的理解Selective Search算法。...
【标题】"Simple Python script to compute Selective Search proposals in Matlab" 这个标题暗示了一个使用Python编写的脚本,其目的是在Matlab环境中实现Selective Search算法,该算法主要用于图像对象检测和分割...
Selective Search是一种计算机视觉技术,主要用于图像分割和目标检测领域,其主要目的是生成一系列候选区域,这些区域被认为可能包含感兴趣的对象。这项技术的核心在于快速而有效地生成高质量的搜索区域,为后续的...
# Selective-Search算法 # 输入: rgb图片 # 输出: 预选框-candidate-box # 第1步: 利用Graph-Based Segmentation算法,将图片过度分割 # 第2步: 创建字典集,每个子字典,含8个键值对 # 第3步: 邻近匹配字典...
本文件是对Selective Search的代码实现,结合本文对该算法的理解,里面都是中文注释,很容易理解
**基于OpenCV实现的目标检测——SelectiveSearch算法源代码解析** 目标检测在计算机视觉领域中扮演着至关重要的角色,它能够帮助我们识别图像中的特定对象。R-CNN(Region with Convolutional Neural Networks)...
《选择性搜索(Selective Search)在目标检测与分割中的应用》 选择性搜索(Selective Search)是一种在图像处理和计算机视觉领域广泛使用的区域提议方法,主要用于目标检测和目标分割任务。这种方法通过组合图像中...
`SelectiveSearch.py`是Python代码实现的选择性搜索算法。在这个文件中,我们可以期待看到如下的关键点: 1. **图像预处理**:将原始图像转换为适合进行超像素分割的格式,可能包括调整大小、归一化等操作。 2. **...
Selective Search for Object Recognition-附件资源