(将.mat文件作为OpenCV中的图像加载)将具有128个通道的numpy数组重塑为3个通道

2024-05-16 22:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试加载从Tensorflow导出的.mat图像Scipy.io公司使用OpenCV。在

我可以修改Tensorflow代码直接导出只有3个通道的.mat图像,但我会丢失很多数据,甚至看起来都不正确。在

这就是为什么我要按原样输出原始数据。在

在我的例子中,我用scipy.io公司得到像这样的纽比阵列

(640640640128)

我想重塑它,因为OpenCV无法加载128个通道的图像。在

(640,640)

我没有完全理解重塑的概念,我认为我做错了。在

我得到了这个错误:

ValueError: cannot reshape array of size 52428800 into shape (640,640,3)

谢谢你,祝你今天愉快

海瑟姆


编辑1: 这就是密码:

import cv2
import scipy.io as sio
import numpy as np

matfile = 'docia.mat'
img = sio.loadmat(matfile)

img_reshaped = img['embedmap'].reshape(640, 640, 3)

cv2.imshow("segmented_map", img['embedmap'])
cv2.waitKey(0)`

Tags: io图像importimgtensorflowas公司scipy
1条回答
网友
1楼 · 发布于 2024-05-16 22:17:23

当您希望保留所有数据但形状不同时,使用重新成形。我相信你是在试图放弃128个频道中的125个。为此,您只需使用索引来获取前3个频道:

img_reshaped = img['embedmap'][:, :, :3]

另外,您传递的是img['embeddap'],而不是将经过整形的img_重新整形到cv2.imshow()中。在

尽管我建议你用灰色比例尺逐一查看。在

^{pr2}$

相关问题 更多 >