Blog

ProjectBlog: Python影像辨識筆記(三):Open CV操作筆記

Blog: Python影像辨識筆記(三):Open CV操作筆記



引入模組

import numpy as np
import cv2

讀取圖檔

img = cv2.imread('image.jpg')
#以 cv2.imread 讀進來的資料,會存成NumPy陣列
----------------------------------------------------------
# 以灰階的方式讀取圖檔
img_gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
#cv2.IMREAD_COLOR 為預設值
#cv2.IMREAD_GRAYSCALE
以灰階的格式來讀取圖片。
#cv2.IMREAD_UNCHANGED 讀取圖片中所有的 channels,包含透明度的 channel。

查看圖片屬性

#1920×1080的彩色圖片
img.shape
(1080, 1920, 3) 
#(圖片高度,圖片寬度,RGB維度)
RGB微度彩色為3,灰階為1

建立特徵分類器

faceCascade = cv2.CascadeClassifier(cascPath)
#Cascade為一個XML檔

偵測圖片

faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
#detectMultiScale為偵測特徵的功能
#gray是灰階圖片
#scaleFactor調整該數值大小可影響辨識結果
#
minNeighbors調整該數值大小可影響辨識結果
scaleFactor,minNeighbors須針對不同狀況進行實驗

顯示圖片

# 顯示圖片
cv2.imshow('My Image', img)
cv2.waitKey(0) #持續等待至使用者按下按鍵為止(單位為毫秒) 
cv2.destroyAllWindows() #關閉所有視窗
cv2.destroyWindow('My Image') #關閉My Image視窗

縮放大小

# 讓視窗可以自由縮放大小
cv2.namedWindow('My Image', cv2.WINDOW_NORMAL)
cv2.imshow('My Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

寫入圖片檔案

# 寫入圖檔
cv2.imwrite('result.jpg', img)
# 寫入不同圖檔格式
cv2.imwrite('result.png', img)
cv2.imwrite('result.tiff', img)
# 設定 JPEG 圖片品質為 90(可用值為 0 ~ 100)
cv2.imwrite('output.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 90])
# 設定 PNG 壓縮層級為 5(可用值為 0 ~ 9)
cv2.imwrite('output.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 5])

使用 Matplotlib 顯示圖片

#彩色圖片
import numpy as np
import cv2
from matplotlib import pyplot as plt
# 使用 OpenCV 讀取圖檔
img_bgr = cv2.imread('image.jpg')
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
# 使用 Matplotlib 顯示圖片
plt.imshow(img_rgb)
plt.show()
#灰階圖片
# 使用 OpenCV 讀取灰階圖檔
img_gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 使用 Matplotlib 顯示圖片
plt.imshow(img_gray, cmap = 'gray')
plt.show()

OpenCV 裁切圖片

import cv2
# 讀取圖檔
img = cv2.imread("lena.jpg")
# 裁切區域的 x 與 y 座標(左上角)
x = 100
y = 100
# 裁切區域的長度與寬度
w = 250
h = 150
# 裁切圖片
crop_img = img[y:y+h, x:x+w]
# 顯示圖片
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
# 寫入圖檔
cv2.imwrite('crop.jpg', crop_img)

加入文字

import numpy as np
import cv2

img = np.zeros((400, 400, 3), np.uint8)
img.fill(90)

# 文字
text = 'Hello, OpenCV!'

# 使用字體
# cv2.putText(影像, 文字, 座標, 字型, 大小, 顏色, 線條寬度, 線條種類)
cv2.putText(img, text, (10, 40), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 255, 255), 1, cv2.LINE_AA)

cv2.imshow('My Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Source: Artificial Intelligence on Medium

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top
a

Display your work in a bold & confident manner. Sometimes it’s easy for your creativity to stand out from the crowd.

Social