python讀取影象矩陣檔案並轉換為向量例項
阿新 • • 發佈:2020-06-18
假設影象矩陣大小為32×32,將其轉換為向量,首先建立1×1024的NumPy陣列,然後開啟給定的檔案,迴圈讀出檔案的前32行,並將每行的頭32個字元值儲存在NumPy陣列中
import numpy as np def img2vector(filename): returnVect = np.zeros((1,1024)) fr = open(filename) for i in range(32): lineStr = fr.readline() for j in range(32): returnVect[0,32*i+j] = int(lineStr[j]) return returnVect
補充知識:旋轉向量和旋轉矩陣的互相轉換(python cv2.Rodrigues()函式)
處理矩陣三維轉換時,通常採用旋轉矩陣,但是旋轉變換其實只有三個自由度,用旋轉向量表達時更為簡潔。因此,需要實現從旋轉向量和旋轉矩陣之間的互轉換。
旋轉向量和旋轉矩陣之間可以通過羅德里格斯公式進行轉換:
程式碼實現:
可以直接採用opencv中的Rodrigues函式實現,函式原型:
void Rodrigues( InputArray src,OutputArray dst,OutputArray jacobian = noArray() );
引數:
輸入src:旋轉向量(3*1或者1*3)或者旋轉矩陣(3*3);
輸出dst:旋轉矩陣(3*3)或者旋轉向量(3*1或者1*3);
輸出jacobin:可選項,輸出雅克比矩陣(3*9或者9*3),輸入陣列對輸出陣列的偏導數。
python程式碼舉例:
# -*- coding: UTF-8 -*- import os import cv2 import numpy as np T = np.zeros((1,3),np.float32) a = (0.2,0.4,0.8) print (a) R = cv2.Rodrigues(a) print (R[0]) v3 = (R[0][2,1],R[0][0,2],R[0][1,0]) print (v3) c = cv2.Rodrigues(v3) print (c[0]) b = cv2.Rodrigues(R[0]) print (b[0]) p = (-2.100418,-2.167796,0.27330) print(cv2.Rodrigues(p)[0])
例子如下:
以上這篇python讀取影象矩陣檔案並轉換為向量例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。