在将2D图像转换为3D中,为什么我要在numpy中将图像转换为数组
for object_images_array = object_images_array.transpose(1, 0, 2) # Change dimensions to (cube_depth, cube_height, cube_width)
我收到此错误吗?
ValueError:轴与数组不匹配
这是我的代码的一部分:
import os
import cv2
import numpy as np
from mayavi import mlab
output_folder = 'output_img-test-2'
cube_height, cube_width = 200, 340
num_frames = 6
object_images = []
while frame_number < num_frames:
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number * frame_skip)
ret, frame = cap.read()
if not ret:
break
# Resize
frame = cv2.resize(frame, (cube_width, cube_height))
output_image_path = os.path.join(output_folder, f'output_{frame_number:04d}.png')
cv2.imwrite(output_image_path, frame)
frame_number += 1
cap.release()
cube_depth = len(object_images)
x, y = np.meshgrid(np.arange(cube_width), np.arange(cube_height))
z = np.zeros_like(x)
object_images_array = np.array(object_images)
object_images_array = object_images_array.transpose(2, 0, 1)
对于将2D照片转换为3D的项目,我在numpy中将图像转换为数组时遇到问题:错误
ValueError:轴与数组不匹配”
我可以通过尝试移动 2d 数组的 3 个轴来得到你的错误
In [108]: np.ones((2,3)).transpose([1,0])
Out[108]:
array([[1., 1.],
[1., 1.],
[1., 1.]])
In [109]: np.ones((2,3)).transpose([1,0,2])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[109], line 1
----> 1 np.ones((2,3)).transpose([1,0,2])
ValueError: axes don't match array
transpose
移动现有轴;它不会添加新的维度。当人们考虑“行向量”与“列向量”而不认真考虑一维 numpy 数组的形状时,这是最常见的问题。
In [110]: np.arange(4).T
Out[110]: array([0, 1, 2, 3])
一维数组的转置根本不会改变形状。这对于
np.transpose
有清楚的记录。
要添加维度,您必须使用
reshape
或 None/newaxis
索引习惯用法
In [112]: np.ones((2,3)).reshape(2,1,3)
Out[112]:
array([[[1., 1., 1.]],
[[1., 1., 1.]]])
In [113]: np.ones((2,3))[:,None,:]
Out[113]:
array([[[1., 1., 1.]],
[[1., 1., 1.]]])