Pin-Jiun / Python

Python Document
0 stars 0 forks source link

27-opencv #27

Open Pin-Jiun opened 1 year ago

Pin-Jiun commented 1 year ago

圖片的座標

在電腦中我們儲存的圖片,預設的座標軸(Ix, Iy)都是在「第四象限」! 小畫家的左下角也提供我們快速查詢座標的方式

而處理圖片大多是用matrix(numpy)的方式, 也就是Matrix[m,n]的方式

Ix = n
Iy = m
h,w,d = img.shape

cv2.imread(路徑,標誌)

參數: path:一個字符串,表示要讀取的圖像的路徑。 flag:指定讀取圖像的方式。它的默認值為cv2.IMREAD_COLOR

返回值:此方法返回從指定文件加載的圖像。

cv2.IMREAD_COLOR:指定加載彩色圖像。圖像的任何透明度都將被忽略。它是默認標誌。或者我們可以為此標誌傳遞整數值1 cv2.IMREAD_GRAYSCALE:指定以灰度模式加載圖像。或者,我們可以為此標誌傳遞整數值0 。 cv2.IMREAD_UNCHANGED:它指定加載圖像,包括 alpha 通道。或者,我們可以為此標誌傳遞整數值-1 。


儲存圖片 cv2.imwrite

# 儲存圖片 save image
# 第一個參數為圖片路徑(可直接修改副檔名),第二個為圖片
cv2.imwrite('./test_result/out.jpg', result_img)

旋轉圖片 cv2.getRotationMatrix2D

M = cv2.getRotationMatrix2D(center, 15, 1.0)

def rotate_img(img):
    (h, w, d) = img.shape # 讀取圖片大小
    center = (w // 2, h // 2) # 找到圖片中心

    # 第一個參數旋轉中心,第二個參數旋轉角度(-順時針/+逆時針),第三個參數縮放比例
    M = cv2.getRotationMatrix2D(center, 15, 1.0)

    # 第三個參數變化後的圖片大小
    rotate_img = cv2.warpAffine(img, M, (w, h))

    return rotate_img

縮放圖片 cv2.resize

img1 = cv2.resize(image, (400, 400), interpolation=cv2.INTER_NEAREST)

interpolation 如果是要縮小圖片的話,通常 INTER_AREA 使用效果較佳。 如果是要放大圖片的話,通常 INTER_CUBIC 使用效果較佳,次等則是 INTER_LINEAR。 如果要追求速度的話,通常使用 INTER_NEAREST。


result = cv2.matchTemplate(image, templ, method[, result])

1.輸入兩張影像,分別為 image、template

2.不斷滑動 template,得到 image 上各個位置的比較值,比較值代表相似程度 然後將 image 左上角位置,作為 result 比較值的存放位置

3.完成後可得到 result 可用 minMaxLoc() 函式,找出結果圖的最大或最小值,定位出搜尋位置

參數

image 被尋找的圖片 必須為 8-bit or 32-bit

templ 尋找的物品圖片 size 不能大於 image,且格式需一致

method 比對的方法 result 比較的結果,格式為 numpy.ndarray (dtype=float32) 可傳入想儲存結果的 array

限制 物體有旋轉時,會找不到 物體大小改變時,會找不到

其中OpenCV 提供6種方法:

CV_TM_SQDIFF: 將圖片直接與模板相減之平方差,與原始圖片差值最小的位置即為結果,但容易受到光線影響,匹配結果較不穩定

CV_TM_SQDIFF_NORMED: 正規化後的平方差,可以適應原始圖片及模板同時提高亮度的狀況,但只有其中之一的圖片光線調整,依然會產生問題

CV_TM_CCORR:: 相關性係數(correlation),分數越高越相似

CV_TM_CCORR_NORMED: 正規化相關性係數(correlation),分數越高越相似

CV_TM_CCOEFF: 相關性係數,但去除本身圖片亮度,只保留圖片分布,可以適應圖片及模板亮度變化,分數越高越相似

CV_TM_CCOEFF_NORMED: 正規化相關性係數,且除本身圖片亮度,只保留圖片分布,分數越高越相似

ref https://www.wongwonggoods.com/category/all-posts/python/python_opencv/page/4/