天天看點

Python OpenCv學習基礎知識三

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
# 

#      

四、總結

繼續閱讀