用selective search方法提取候选框最简单的方法
1、根据如下github连接下载相关文件,并安装相应包
https://github.com/AlpacaDB/selectivesearch
2、运行example文件中运行脚本 example.py
# -*- coding: utf-8 -*- from __future__ import ( division, print_function, ) import skimage.data import matplotlib.pyplot as plt import matplotlib.patches as mpatches import selectivesearch from skimage import io def main(): # loading astronaut image # img = skimage.data.chelsea() img = io.imread('/Users/zhouyang/rcnnCode/selectivesearch-develop 2/738.jpg') # perform selective search img_lbl, regions = selectivesearch.selective_search( img, scale=20, sigma=0.9, min_size=10) candidates = set() for r in regions: # excluding same rectangle (with different segments) if r['rect'] in candidates: continue # excluding regions smaller than 2000 pixels # if r['size'] < 2000: # continue # distorted rects x, y, w, h = r['rect'] # if w / h > 1.2 or h / w > 1.2: # continue candidates.add(r['rect']) # draw rectangles on the original image fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6)) ax.imshow(img) print(candidates) with open("738.txt","w") as f:#格式化字符串还能这么用! for x, y, w, h in candidates: f.writelines([str(x),' ',str(y),' ',str(x+w),' ',str(y+h),'\n']) 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() if __name__ == "__main__": main()