前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python读取图像矩阵文件并转换为向量实例

python读取图像矩阵文件并转换为向量实例

作者头像
砸漏
发布2020-10-21 10:27:53
2K0
发布2020-10-21 10:27:53
举报
文章被收录于专栏:恩蓝脚本

假设图像矩阵大小为32×32,将其转换为向量,首先创建1×1024的NumPy数组,然后打开给定的文件,循环读出文件的前32行,并将每行的头32个字符值存储在NumPy数组中

代码语言:javascript
复制
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代码举例:

代码语言:javascript
复制
# -*- 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读取图像矩阵文件并转换为向量实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档