当前位置:   article > 正文

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

numpy读取图片是变成矩阵了?

假设图像矩阵大小为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读取图像矩阵文件并转换为向量实例

本文地址: http://www.cppcns.com/jiaoben/python/320975.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/392125
推荐阅读
相关标签
  

闽ICP备14008679号