Opencv Python版學習筆記(二)漫水填充
漫水填充:也就是用一定顏色填充聯通區域,通過設定可連通畫素的上下限以及連通方式來達到不同的填充效果;
程式說明依舊以註釋的形式寫出,在Python例程的基礎上修改為隨機顏色填充:
#decoding:utf-8 import numpy as np import cv2 import random help_message = '''USAGE: floodfill.py [<image>] Click on the image to set seed point Keys: f - toggle floating range c - toggle 4/8 connectivity ESC - exit ''' if __name__ == '__main__': import sys try: fn = sys.argv[1] except: fn = 'E:/lena.jpg' print help_message img = cv2.imread(fn, True) 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()
相關推薦
Opencv Python版學習筆記(二)漫水填充
漫水填充:也就是用一定顏色填充聯通區域,通過設定可連通畫素的上下限以及連通方式來達到不同的填充效果; 程式說明依舊以註釋的形式寫出,在Python例程的基礎上修改為隨機顏色填充: #decoding:utf-8 import numpy as np import cv2
Opencv Python版學習筆記(三)模板匹配
模板匹配:模板匹配是通過目標圖片在待匹配圖片進行遍歷,通過選擇一定的匹配方式能夠得到每個起始畫素點的匹配值,最終匹配值最大的位置就是候選匹配位置,也就達到了匹配查詢的效果 本例是通過滑鼠選取影象中的一塊矩形區域,遍歷原影象後得到一個匹配值矩陣,將矩陣轉換成0-255的灰度影
python基礎教程(第三版)學習筆記(二)
第二章 列表和元組 2.1序列概述 Python內建的序列包括列表、元組、字串、Unicode字串、buffer物件和xrange物件等,本章僅介紹列表和元組。 列表和元組的主要不同在於,列表的元素是可以修改的,而元組不可以單獨更改其中的單個元素,但可以更改元組的整體內容。 在序列中,每個元素都有編
Python爬蟲學習筆記(二)——requests庫的使用
pip 安裝 .text rep 瀏覽器 ror clas ade 學習筆記 準備工作 requests庫不是python自帶的庫,可以用pip安裝。在使用時導入requests即可。 基本用法 GET請求 r = requests.get(url) print(r.tex
python入門學習筆記(二)——列表
3.列表 3.1使用列表的值 name = ['dad','sss','ff'] print(name) print(name[0]) print(name[-1].upper()) 3.2修改列表值 name[-1] = 'aa' print(name) 3
SQL入門經典(第5版)學習筆記(二)
1.判斷對錯:個人社會保險號碼,輸入格式為 '1111111111',它可以是下面任何一種資料型別:定長字元、變長字元、數值。錯 不能是數值 引號會轉換為字元 2.判斷對錯:數值型別的標度是指數值的總體長度。對 會自動補全 3.所有的SQL實現都使用同樣的資料型別嗎?不同 按需使用 4.下面定義的有效位
Python基礎學習筆記(二)
一、Windows平臺 1、下載Python 3.6.4 https://www.python.org/ 2、雙擊安裝即可,注意點選Add python 3.6 to path 3、win+r 輸入cmd 開啟控制檯 輸入python命令,檢視是
opencv 視覺專案學習筆記(二): 基於 svm 和 knn 車牌識別
車牌識別的屬於常見的 模式識別 ,其基本流程為下面三個步驟: 1) 分割: 檢測並檢測影象中感興趣區域; 2)特徵提取: 對字元影象集中的每個部分進行提取; 3)分類: 判斷影象快是不是車牌或者 每個車牌字元的分類。 車牌識別分為兩個步驟, 車牌檢測, 車牌識別, 都屬於模式識別。 基本結構如下: 一、車牌
python爬蟲學習筆記(二)——基礎篇之爬蟲基本原理
包括 for .py 非關系型 原理 sof 301跳轉 close bsp 1.什麽是爬蟲? 請求網站並提取數據的自動化程序 2.爬蟲基本流程 2.1發起請求 通過HTTP庫向目標站點發起請求,即發起一個Request,請求可以包含額外的headers等信息,等
Python + OpenCV 學習筆記(二)>>> 載入視訊流
在這有一點要注意: 由於我使用的是樹莓派原裝攝像頭,故不能直接被cv.VideoCapture(0) 所檢測到,所以要先修改/etc/modules 檔案,在其末尾新增bcm2835-v4l2,儲存重啟,隨後在/dev/目錄中就能發現多了個video0 裝置 import cv2 a
Opencv Python版學習筆記 字元識別-分類器(SVM,KNearest,RTrees,Boost,MLP)
Opencv提供了幾種分類器,例程裡通過字元識別來進行說明的 1、支援向量機(SVM):給定訓練樣本,支援向量機建立一個超平面作為決策平面,使得正例和反例之間的隔離邊緣被最大化。 函式原型:訓練原型 cv2.SVM.train(trainData, responses[, varIdx[,
Spark (Python版) 零基礎學習筆記(二)—— Spark Transformations總結及舉例
1. map(func) 將func函式作用到資料集的每個元素,生成一個新的分散式的資料集並返回 >>> a = sc.parallelize(('a', 'b', 'c')) >>> a.map(lambda x:
算法(第四版)學習筆記(二)——初級排序算法
space 倒序 優勢 name 算法 turn 資料 eply n) 時間復雜度(Time Complexity): 總運算次數表達式中受n的變化影響最大的那一項(不含系數)(註:若算法中語句執行次數為一個常數,則時間復雜度為O(1)) 若T(n)/f(n)求極限可得
Python學習筆記(二)
== 文字 編碼 無法 比較運算 一個 unicode編碼 變量 組成 一、Python中的數據類型 Python是一種弱類型的編程語言,但具體到對數據的操作時,仍存在和必須涉及到具體的數據類型的概念。 Python中的基本數據類型可以分為: 數值類型:整型、浮
python學習筆記(二)列表操作
練習 位數組 post print ihe 之間 反轉 st2 money 列表及列表操作: 列表是最常用的數據類型之一,列表也叫數組,列表定義,使用[]即可;列表裏面可以再套列表,一個裏面套一個列表,叫二維數組;一個裏面套一個列表,裏面的列表再套一個列表,這個叫三位數
Boost Python學習筆記(二)
通過 cmak cat 結構 固定 動物類 程序 virt 使用配置 你將學到什麽 如何在Python中調用C++代碼 如何在C++中調用Python代碼 在Python中調用C++代碼 首先定義一個動物類(include/animal.h) #pragma once
python3學習筆記(二):Python初識
區別 說明 from 學習筆記 情況 不能 col 需要 學習 一、算法 在開始認真地編程之前,首先來解釋下什麽是計算機程序設計。簡單地說,它就是告訴計算機要做什麽。計算機可以做很多事情,但是它不會自己思考,需要我們告訴它具體細節,並且使用計算機能夠理解的語言把算法告
opencv 視覺項目學習筆記(二): 基於 svm 和 knn 車牌識別
its ++ eas -a rect() repr poi obj std 車牌識別的屬於常見的 模式識別 ,其基本流程為下面三個步驟: 1) 分割: 檢測並檢測圖像中感興趣區域; 2)特征提取: 對字符圖像集中的每個部分進行提取; 3)分類: 判斷圖像快是不是車牌或者 每
python基礎教程(第三版)學習筆記(六)
第六章 抽象(函式) 6.1 懶惰是一種美德 6.2 抽象和結構 6.3 自定義函式 判斷某個物件是否可呼叫,可使用內建函式callable。格式是callable(物件)。 函式是結構化程式設計的核心。使用def(表示定義函式)語句。 ''' def fun(str_s): #
python基礎教程(第三版)學習筆記(四)
第四章 字典 字典一種可通過名稱來訪問其各個值的資料結構。這種資料結構稱為對映。字典是Python中唯一的內建對映型別,其中的值不按順序排列,而是儲存在鍵下。鍵可能是數、字串或元組。 4.1 字典的用途 i表示棋盤的狀態,其中每個鍵都是由座標組成的元組; ii儲存檔案修改時間,其中的鍵為檔名; ii