ターゲット検出:選択的検索(selective search)

2078 ワード

selective searchメソッドで候補ボックスを抽出する最も簡単な方法
1、以下のgithub接続に従って関連ファイルをダウンロードし、相応のパッケージをインストールする
https://github.com/AlpacaDB/selectivesearch
端末の下で実行:
pip install selectivesearch

2、exampleファイルでスクリプトexampleを実行する.py、その中の画像は持参したテスト画像です
3、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.astronaut()  # 
    img = io.imread('/home/qf/git/myfile2/selectivesearch-develop/example/test_00042.jpg')

    # 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
        # excluding regions smaller than 2000 pixels
        if r['size'] < 20000:         # 
            continue
        # distorted rects
        x, y, w, h = r['rect']
        if w / h < 0.25 or h / w < 0.25:  # 1/4 
            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("box.txt","w") as f:# !
        for x, y, w, h in candidates:
            f.writelines([str(x),' ',str(y),' ',str(x+w),' ',str(y+h),'
']) ############################################### 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()