Python OpenCv學習基礎知識三
文章目錄
- Python OpenCv學習基礎知識三
- 一、一個案例
- 二、圖像基本操作一
- 三、圖像基本操作二
- 四、總結
一、一個案例
這個案例是使用cv2來做一個調色闆:
"""
使用滑動條做一個調色闆
"""
"""
使用工具Python3.5
使用庫numpy;cv2
使用函數cv2.getTrackbarPos();cv2.creatTrackbar()
1.通過調節滑動條來設定畫闆顔色。
1.1視窗顯示顔色,三個滑動條來設定RGB的顔色
1.2當滑動滑動條時,視窗顔色實時發生改變,預設視窗為黑色。
1.3cv2.getTrackbarPos()參數詳情:
1.3.1滑動條的名字
1.3.2滑動條被放置視窗的名字
1.3.3滑動條預設的位置
1.3.4滑動條最大的值
1.3.5回調函數,每次滑動都會調用回調函數,回調函數通常都會含有一個預設參數,就是滑動條的位置。
1.4滑動條的另一個應用就是用作轉換按鈕,預設OpenCV是不帶有按鈕函數的,這裡以滑動條代替,需要先建立一個轉換按鈕,隻有當轉換按鈕指向ON時滑動條才有用。
"""
import cv2
import numpy as np
def nothing(x):
pass
#建立一個黑色圖像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
# RGB的顔色顯示模式。
switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):
# 1就是True
cv2.imshow('image',img)
# 展示
k=cv2.waitKey(1)
if k == ord('q'):#按q鍵退出
break
r = cv2.getTrackbarPos('B','image')
g = cv2.getTrackbarPos('G', 'image')
b = cv2.getTrackbarPos('R', 'image')
# 确實似乎顯得不對應,但是這樣一來,在圖檔面的顔色的顯示是完全正确的了呢,是以還是要變成這個樣子的呢。
s = cv2.getTrackbarPos(switch, 'image')
if s == 0:
img[:]=0
else:
img[:]=[r,g,b]
# 是否顯示顔色。
cv2.destroyAllWindows()
# 銷毀
"""
不得不說,這個調色闆還是很厲害的呢。
import cv2
import numpy as np
def nothing(x):
pass
#建立一個黑色圖像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):
cv2.imshow('image',img)
k=cv2.waitKey(1)
if k == ord('q'):#按q鍵退出
break
r = cv2.getTrackbarPos('R','image')
g = cv2.getTrackbarPos('G', 'image')
b = cv2.getTrackbarPos('B', 'image')
s = cv2.getTrackbarPos(switch, 'image')
if s == 0:
img[:]=0
else:
img[:]=[r,g,b]
cv2.destroyAllWindows()
"""
"""
import cv2
import numpy as np
def nothing(x):
pass
#建立一個黑色圖像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):
cv2.imshow('image',img)
k=cv2.waitKey(1)
if k == ord('q'):#按q鍵退出
break
r = cv2.getTrackbarPos('R','image')
g = cv2.getTrackbarPos('G', 'image')
b = cv2.getTrackbarPos('B', 'image')
s = cv2.getTrackbarPos(switch, 'image')
if s == 0:
img[:]=0
else:
img[:]=[r,g,b]
cv2.destroyAllWindows()
"""
二、圖像基本操作一
"""
OpenCV圖像的基本操作
"""
import numpy as np
import cv2
"""
OpenCV圖像的基本操作一1
1
1
1
1
1
擷取并且修改像素
"""
"""
直接擷取的方法
"""
img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 仍然注意是絕對的路徑
# 注意是絕對的路徑。
px=img[100,100]
print(px)
# 讀取顔色(RGB)
blue = img[100,100,0]
print(blue)
# 讀取第一個RGB的數值
img[101,101]=[255,255,255]
print(img[101,101])
# 進行指派以後,會直接有一個所賦給的數值。
"""
使用numpy的方法
"""
img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 絕對路徑。
print(img.item(10,10,2))
# 讀取顔色資訊。
img.itemset((10,10,2),100)
print(img.item(10,10,2))
# 使用numpy的方法來進行讀取顔色的相關的資訊。
三、圖像基本操作二
"""
OpenCV圖像的基本操作
"""
import numpy as np
import cv2
"""
OpenCV圖像的基本操作二2
2
2
2
2
2
擷取圖像屬性
"""
img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 絕對的路徑
# 1、shape
print(img.shape)
# img.shape可以獲得圖像的形狀,傳回值是一個包含行數,列數,通道數的元組
# 2、size
print(img.size)
# img.size可以傳回圖像的像素數目
# 3、dtype
print(img.dtype)
# img.dtype傳回圖像的資料類型,在debug時很重要,因為OpenCV-Python代碼中經常出現資料類型的不一緻
#
# (866, 650, 3)
# 1688700
# uint8
#
#