| 
 | 
 
 
• opencv依照顏色、紋理、大小、形狀等四種相似度進行偵測,依 
你指定的方式(例如矩形)進行圈選,產生候選區域。 
• ss=cv2.ximgproc.segmentation.createSelectiveSearchSegmentation() 
• 代表產生一個分析後產生候選區域的物件。 
• ss.setBaseImage(im) 
• ss這個物件設定基礎影像 
• ss.switchToSelectiveSearchFast() 
• ss進行快速的物件偵測與候選• 執行之後產生候選區域 
• rects=ss.process() 
• 因偵測鍵盤動作關係,所以相關動作建議放在 while True迴圈內。 
• 鍵盤偵測主要是進行兩部分 
• numShowRects=100 #顯示的候選區域數量,值可以修改 
• increment=50 #每次增加或減少的候選區域數量,值可以修改 
• 鍵盤主要是ASCII碼進行偵測。 
• 程式將會偵測m 、l與q這三個按鍵。 • Q:候選區域偵測可以做甚麼? 
• A: 
• 1.區域的資訊擷取出來後可以進行眾多圖像的CNN分類操作。 
• 2.可將偵測到的區域進行裁切後儲存。 
• Q:程式中鍵盤動作的目的 
• A: 
• 程式採用無限迴圈方式 (while True),若沒有設定暫停方式,以便改變流 
程離開,程式將會永遠執行。 
• 利用偵測鍵盤上的按鍵方式,讓程式能夠暫停  
原圖 
Python cv2 候選區域 
 
 
程式碼 
- import random
 
 - import cv2
 
 - import numpy as np
 
 - im=cv2.imread('simpsons.jpg')
 
 - segmentator=cv2.ximgproc.segmentation.createGraphSegmentation(
 
 -     sigma = 0.7,
 
 -     k=300,
 
 -     min_size =10000
 
 - )
 
 - segment = segmentator.processImage(im)
 
 - print('以下為顏色分割影像的截取與顏色標記')
 
 - seg_image = np.zeros(im.shape, np.uint8)
 
  
- a=0
 
 - for i in range(np.max(segment)):
 
 -     y, x = np.where(segment==i)
 
 -     color = [random.randint(0,255),random.randint(0,255),random.randint(0,255)]
 
 -     a += 1
 
 -     for xi,yi in zip(x,y):
 
 -         seg_image[yi,xi] = color
 
 - print(a)
 
 - result = cv2.addWeighted(im,0.3,seg_image,0.7,0)
 
 - cv2.imshow('result',result)
 
 - cv2.imwrite('10000.png',result)
 
 - cv2.waitKey()
 
  複製代碼 
segmentator=cv2.ximgproc.segmentation.createGraphSegmentation( 
sigma=0.5, 
k=300, 
min_size=1000 
) 
以影像為基礎的切割方式 
sigma:影像平滑程度處理 
k:影像切割時演算法參數 
min_size: 影像切割時的最小尺寸 (因圖像偵測區域而進行切割,所以每一 
個影像尺寸都會不同)  
結果圖
Python cv2 候選區域 
 
 
 
• opencv若依相似度或影像進行切割,無法控制他會產生多少個結 
果。 
• opencv內建kmeans這種非監督式學習的分群方法,可指定分群的 
數量。 
• opencv的kmeans的輸入有六個參數,輸出有三個參數。• opencv的kmeans的輸入有六個參數,輸出有三個參數。 
• 輸入的部分 
• 1.data,樣本,影像 
• 2.K,你想要規劃多少群 
• 3.bestLabels,這個參數於官方文件上沒有說明,可設定為None• opencv的kmeans的輸入有六個參數,輸出有三個參數。 
• 輸入的部分 
• 4.規則 criteria,分群的方式,要怎麼找,原則上有三個參數的組 
合,type、max_iter、epsilon。 
• 設定的時候 
(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0) 
TERM_CRITERIA_EPS 若達到指定的精準度(1.0)則停止查找 
TERM_CRITERIA_MAX_ITER 若達到指定的周期數(10)則停止查找• opencv的kmeans的輸入有六個參數,輸出有三個參數。 
• 輸入的部分 
• 5.執行次數,分群時用於指定不同的初始標籤的次數,也就是你 
可以反悔的次數。  
 
 |   
 
 
 
 |