假设图像矩阵大小为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读取图像矩阵文件并转换为向量实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
python,图像矩阵,转换向量
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。