selective search 选择性搜索提取候选框

用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()

你可能感兴趣的:(目标检测)