python讀取圖像矩陣文件并轉換為向量實例
假設圖像矩陣大小為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 osimport cv2import numpy as npT = 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讀取圖像矩陣文件并轉換為向量實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. docker compose idea CreateProcess error=2 系統找不到指定的文件的問題2. 將properties文件的配置設置為整個Web應用的全局變量實現方法3. 一文秒懂idea的git插件跟翻譯插件4. python爬蟲利用代理池更換IP的方法步驟5. layui Ajax請求給下拉框賦值的實例6. Java反射技術原理與用法實例分析7. python中pandas.read_csv()函數的深入講解8. PHP設計模式之迭代器模式Iterator實例分析【對象行為型】9. JS中的常見數組遍歷案例詳解(forEach, map, filter, sort, reduce, every)10. Python語言規范之Pylint的詳細用法
