漫水填充:也就是用一定顏色填充聯通區域,通過設定可連通畫素的上下限以及連通方式來達到不同的填充效果;
程式說明依舊以注釋的形式寫出,在python例程的基礎上修改為隨機顏色填充:
h, w = img.shape[:2]#得到影象的高和寬
mask = np.zeros((h+2, w+2), np.uint8)#掩碼單通道8位元,長和寬都比輸入影象多兩個畫素點,滿水填充不會超出掩碼的非零邊緣
seed_pt = none
fixed_range = true
connectivity = 4
def update(dummy=none):
if seed_pt is none:
cv2.imshow('floodfill', img)
return
flooded = img.copy()#以副本的形式進行填充,這樣每次
mask[:] = 0#掩碼初始為全0
lo = cv2.gettrackbarpos('lo', 'floodfill')#觀察點畫素鄰域負差最大值(也就是與選定畫素多少差值內的歸為同一區域)
hi = cv2.gettrackbarpos('hi', 'floodfill')#觀察點畫素鄰域正差最大值
flags = connectivity#低位位元包含連通值, 4 (預設) 或 8
if fixed_range:
flags |= cv2.floodfill_fixed_range #考慮當前象素與種子象素之間的差(高位元也可以為0)
#以白色進行漫水填充
cv2.floodfill(flooded, mask, seed_pt, (random.randint(0,255), random.randint(0,255), random.randint(0,255)), (lo,)*3, (hi,)*3, flags)
cv2.circle(flooded, seed_pt, 2, (0, 0, 255), -1)#選定基準點用紅色圓點標出
cv2.imshow('floodfill', flooded)
def onmouse(event, x, y, flags, param):#滑鼠響應函式
global seed_pt
if flags & cv2.event_flag_lbutton:#滑鼠左鍵響應,選擇漫水填充基準點
seed_pt = x, y
update()
update()
cv2.setmousecallback('floodfill', onmouse)
cv2.createtrackbar('lo', 'floodfill', 20, 255, update)
cv2.createtrackbar('hi', 'floodfill', 20, 255, update)
while true:
ch = 0xff & cv2.waitkey()
if ch == 27:
break
if ch == ord('f'):
fixed_range = not fixed_range #選定時flags的高位位元位0,也就是鄰域的選定為當前畫素與相鄰畫素的的差,這樣的效果就是聯通區域會很大
print 'using %s range' % ('floating', 'fixed')[fixed_range]
update()
if ch == ord('c'):
connectivity = 12-connectivity #選擇4方向或則8方向種子擴散
print 'connectivity =', connectivity
update()
cv2.destroyallwindows()
更換ROS中的OpenCV python版本
ros kinetic中預設安裝的是opencv 3.3.1 dev版本,而且ros的python環境預設只有2.7版本,通過pip安裝了別的版本的opencv後ros還是會最先呼叫預設的3.3.1,所以需要先解除安裝該版本 sudo easy install trash cli sudo tras...
opencv python學習筆記八
十 影象上的算術運算 常用運算有 加法 減法 位運算 cv2.add cv2.addweighted 函式原型 defadd src1,src2,dst none,mask none,dtype none defaddweighted src1,第乙個原陣列 alpha,第乙個原陣列的權值 src2...
opencv python學習筆記十一
14 幾何變換 移動,旋轉 仿射變換 常用函式 cv2.getperspectivetransform 函式原型 defgetperspectivetransform src,dst cv2.warpaffine 函式原型,接收 2 3的矩陣 defwarpaffine src,輸入源影象 m,透視...