a

Lorem ipsum dolor sit amet, consectetur adicing elit ut ullamcorper. leo, eget euismod orci. Cum sociis natoque penati bus et magnis dis.Proin gravida nibh vel velit auctor aliquet. Leo, eget euismod orci. Cum sociis natoque penati bus et magnis dis.Proin gravida nibh vel velit auctor aliquet.

  /  Project   /  Blog: 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

(Visited 341 times, 1 visits today)
Post a Comment

Newsletter