Pin-Jiun / ComputerVision

0 stars 0 forks source link

10-Get and Show RGB Color Code #10

Open Pin-Jiun opened 1 year ago

Pin-Jiun commented 1 year ago

運用 OpenCV 在圖片上寫文字


def write_text(img):
    text = "FONT_HERSHEY_SIMPLEX"
    position = (10, 40)
    font = cv2.FONT_HERSHEY_SIMPLEX
    size = 1
    color = (0, 255, 255)
    thickness = 1
    lineType =  cv2.LINE_AA
    cv2.putText(img, text, position, font, size, color, thickness, lineType)

return img
cv2.putText(img, text, position, font, size, color, thickness, lineType)

img 原圖 text 要寫的文字 position 寫文字的位置 font 字體 (可以參考下圖) size 字體大小 color 字的顏色 thickness 字的線條寬度 lineType 線條種類

字體範例

cv2.putText(img, "FONT_HERSHEY_PLAIN", (10, 80), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_DUPLEX", (10, 120), cv2.FONT_HERSHEY_DUPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_COMPLEX", (10, 160), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_TRIPLEX", (10, 200), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_COMPLEX_SMALL", (10, 240), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_SCRIPT_SIMPLEX", (10, 280), cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)
cv2.putText(img, "FONT_HERSHEY_SCRIPT_COMPLEX", (10, 320), cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA)

image

運用 OpenCV 查色碼 – 方法一

def get_RGBColorCode(img, x=0 ,y=0):
    # method 1
    (B, G, R) = cv2.split(img) # 3 channel
    b, g, r  = B[y ,x], G[y ,x], R[y ,x]
    print("RGB = ({}, {}, {})".format(r, g, b))

我們的第一種方法,是將整張圖的RGB拆成三個通道, 再由各自的通道去找對應的座標點, 得到我們指定位置的RGB。

運用 OpenCV 查色碼 – 方法二


def get_RGBColorCode(img, x=0 ,y=0):
    # method 2
    b, g, r  = img[y, x]
    print("RGB = ({}, {}, {})".format(r, g, b))

我們的第二種方法,是直接找指定座標點的rgb,

運用 OpenCV 查色碼 – HEX

def get_RGBColorCode(img, x=0 ,y=0):
    # method 2
    b, g, r  = img[y, x]
    print("RGB = ({}, {}, {})".format(r, g, b))

    # 轉成我們常見的 Hex 色碼
    rgb_hex = hex(r)[-2:] + hex(g)[-2:] + hex(b)[-2:]
    print("RGB Hex = #{}".format(rgb_hex))

運用 OpenCV 顯示色碼顏色 – RGB


def show_RGBColorCode(r=0 ,g=0, b=0):
    img = np.array([[[b, g, r]]], dtype=np.uint8)
    show_img(img)

我們傳入rgb的三個值,然後直接建立一個有三個顏色的通道,產生結果顏色。

運用 OpenCV 顯示色碼顏色 – HEX

def show_RGBColorCode_fromHEX(hex='000000'):
    try:
        r, g, b = int(hex[0:2], 16), int(hex[2:4], 16), int(hex[4:6], 16)
        img = np.array([[[b, g, r]]], dtype=np.uint8)
        show_img(img)
    except:  
        print("HEX Color Code Error !")   

這個是特別為了 HEX色碼 產生顏色所寫的,使用 try-except 是避免輸入色碼錯誤

https://www.wongwonggoods.com/all-posts/python/python_opencv/opencv-write-text-rgb-color-code/#%E9%81%8B%E7%94%A8_OpenCV_%E5%9C%A8%E5%9C%96%E7%89%87%E4%B8%8A%E5%AF%AB%E6%96%87%E5%AD%97%E3%80%81%E6%9F%A5%E8%89%B2%E7%A2%BC%E3%80%81%E9%A1%AF%E7%A4%BA%E8%89%B2%E7%A2%BC%E9%A1%8F%E8%89%B2