新聞中心
這篇文章主要介紹了Python Opencv通過軌跡如何欄實(shí)現(xiàn)更改整張圖像的背景顏色,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司專注于中山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,電子商務(wù)商城網(wǎng)站建設(shè)。中山網(wǎng)站建設(shè)公司,為中山等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)實(shí)現(xiàn)軌跡(跟蹤)欄功能的函數(shù)
函數(shù)主要參數(shù)講解
cv.createTrackbar()——?jiǎng)?chuàng)建一個(gè)軌跡(跟蹤)欄
cv.getTrackbarPos()——獲取一個(gè)軌跡(跟蹤)欄的值
cv.createTrackbar()參數(shù)如下:
參數(shù)一:trackbarname——軌跡(跟蹤)欄名稱
參數(shù)二:winname——需要掛載軌跡(跟蹤)欄的窗體名
參數(shù)三:value——默認(rèn)值
參數(shù)四:count——上限值
參數(shù)五:onChange ——軌跡(跟蹤)欄的回調(diào)執(zhí)行函數(shù)
(一般僅僅是通過軌跡欄修改值,然后讀取的話,這個(gè)參數(shù)可以不用管)參數(shù)六:userdata ——作為回調(diào)傳遞的用戶數(shù)據(jù)。它可以在不使用全局變量的情況下處理trackbar事件。
cv.getTrackbarPos()參數(shù)如下:
參數(shù)一:trackbarname——需要讀取的軌跡(跟蹤)欄名稱
參數(shù)二:winname——對(duì)應(yīng)的窗體名
代碼實(shí)現(xiàn)
我們先創(chuàng)建一個(gè)窗體,為軌跡(跟蹤)欄的掛載做準(zhǔn)備
~照片就默認(rèn)創(chuàng)建一張黑色圖片
import cv2 as cv
import numpy as np
img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('imag', cv.WINDOW_NORMAL)
cv.resizeWindow('imag', 510, 510)接著我們把需要的軌跡(跟蹤)欄添加到這個(gè)窗體中(記得必須要?jiǎng)?chuàng)建軌跡(跟蹤)欄回調(diào)函數(shù)的?。。。?br/>回調(diào)函數(shù)可以為pass空函數(shù)——但是必須要有!??!
這次要實(shí)現(xiàn)背景色的控制,那么我們?cè)O(shè)置三個(gè)軌跡(跟蹤)欄,每一個(gè)軌跡欄對(duì)應(yīng)一個(gè)0~255的值——對(duì)應(yīng)BGR中的三色值?。?!
def nothing(x):
pass
# 參數(shù)依次為:設(shè)置軌跡(跟蹤)欄名字,掛載的窗體, 默認(rèn)值, 大值,回調(diào)函數(shù)
cv.createTrackbar('R', 'imag', 0, 255, nothing) # R的值——nothing傳入一個(gè)空函數(shù)體,不執(zhí)行任何回調(diào)函數(shù)
cv.createTrackbar('G', 'imag', 0, 255, nothing) # G的值
cv.createTrackbar('B', 'imag', 0, 255, nothing) # B的值
switch = '1:ON\n0:OFF'
cv.createTrackbar(switch, 'imag', 0, 1, nothing)
# 設(shè)置一個(gè)開關(guān)——當(dāng)為1時(shí),圖片背景可以改變——否則為黑色顯示主體部分的代碼
while True:
cv.imshow('imag', img)
k = cv.waitKey(1) & 0xFF
if k == 27: # ESC退出
break
if cv.getTrackbarPos(switch, 'imag') == 1: # 當(dāng)swtch軌跡(跟蹤)欄的值為1時(shí),允許改變背景色
img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]
# getTrackbarPos的參數(shù)為:讀取值的軌跡(跟蹤)欄名,所在的窗體名
# opencv的顏色為BGR——依次獲取軌跡(跟蹤)欄的值就可以了~
else: # 否則為默認(rèn)黑色
img[:] = 0
cv.destroyAllWindows()效果
完整代碼
import cv2 as cv
import numpy as np
def nothing(x):
pass
if __name__ == "__main__":
img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('imag', cv.WINDOW_NORMAL)
cv.resizeWindow('imag', 510, 510)
cv.createTrackbar('R', 'imag', 0, 255, nothing)
cv.createTrackbar('G', 'imag', 0, 255, nothing)
cv.createTrackbar('B', 'imag', 0, 255, nothing)
switch = '1:ON\n0:OFF'
cv.createTrackbar(switch, 'imag', 0, 1, nothing)
while True:
cv.imshow('imag', img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
if cv.getTrackbarPos(switch, 'imag') == 1:
img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]
else:
img[:] = 0
cv.destroyAllWindows()效果
默認(rèn)打開的樣子~

此時(shí)調(diào)節(jié)背景色是不改變的~

當(dāng)打開時(shí),背景色就會(huì)發(fā)生改變了~

小訓(xùn)
訓(xùn)練要求
我們通過鼠標(biāo)繪制一些東西,然后將背景顏色的修改,作為圖片刷新(清空內(nèi)容)~
代碼結(jié)構(gòu)
鼠標(biāo)回調(diào)函數(shù)(包含包的引用)
import cv2 as cv import numpy as np drawing = False line_size = 2 def mouse_function(event, x, y, flags, param): # 鼠標(biāo)回調(diào)函數(shù)——執(zhí)行鼠標(biāo)左鍵按下后移動(dòng)繪圖 global drawing, line_size if event == cv.EVENT_LBUTTONDOWN: drawing = True elif event == cv.EVENT_MOUSEMOVE: if drawing is True: cv.circle(img, (x, y), line_size, (0, 125, 255), -1, cv.LINE_AA) elif event == cv.EVENT_LBUTTONUP: drawing = False cv.circle(img, (x, y), line_size, (0, 125, 255), -1, cv.LINE_AA)
軌跡(跟蹤)欄回調(diào)函數(shù)
# 這里不需要任何操作~所以用pass空函數(shù)體即可
def nothing(x):
pass
__main__主體代碼
if __name__ == "__main__":
img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('imag', cv.WINDOW_NORMAL)
cv.resizeWindow('imag', 510, 510)
cv.setMouseCallback('imag', mouse_function) # 實(shí)現(xiàn)鼠標(biāo)回調(diào)函數(shù)
cv.createTrackbar('R', 'imag', 0, 255, nothing) # 設(shè)置R軌跡(跟蹤)欄
cv.createTrackbar('G', 'imag', 0, 255, nothing)
cv.createTrackbar('B', 'imag', 0, 255, nothing)
switch = '1:ON\n0:OFF'
cv.createTrackbar(switch, 'imag', 0, 1, nothing) # 設(shè)置開關(guān)控制軌跡(跟蹤)欄
while True:
cv.imshow('imag', img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
if cv.getTrackbarPos(switch, 'imag') == 1: # 為1是,刷新畫面
img[:] = [cv.getTrackbarPos('B', 'imag'), cv.getTrackbarPos('G', 'imag'), cv.getTrackbarPos('R', 'imag')]
cv.setTrackbarPos(switch, 'imag', 0) # 通過set軌跡(跟蹤)欄位置,實(shí)現(xiàn)為1刷新后,及時(shí)回到0位置
cv.destroyAllWindows()效果:(小訓(xùn)練的代碼連起來就可以直接運(yùn)行的,這里就不單獨(dú)再寫一遍了)
先隨意用鼠標(biāo)寫“開心”兩個(gè)字~

接著點(diǎn)擊這里(可能需要點(diǎn)一次選中軌跡(跟蹤)欄,再點(diǎn)擊才能執(zhí)行變化)

然后就實(shí)現(xiàn)刷新了~

我們?cè)賹扅c(diǎn)其它的——

python的數(shù)據(jù)類型有哪些?
python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點(diǎn)型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標(biāo)識(shí),內(nèi)部元素用逗號(hào)隔開。6. 字典,字典是一種鍵值對(duì)的集合。7. 集合,集合是一個(gè)無序的、不重復(fù)的數(shù)據(jù)組合。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python Opencv通過軌跡如何欄實(shí)現(xiàn)更改整張圖像的背景顏色”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:PythonOpencv通過軌跡如何欄實(shí)現(xiàn)更改整張圖像的背景顏色-創(chuàng)新互聯(lián)
當(dāng)前地址:http://m.biofuelwatch.net/article/dhidsh.html


咨詢
建站咨詢
