gpt4 book ai didi

opencv - 将具有图像数据的 numpy 数组转换为 CvMat

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:37 25 4
gpt4 key购买 nike

我在 numpy 数组中有一个图像,我使用 savefig 保存它,然后使用 opencv loadImage 函数将图像加载到 CvMat。但是我想删除这个保存图像的步骤。

我的 Numpy 图像大小是 25x21,如果我使用像这样的 fromArray 函数

im = cv.fromarray(asarray(img))

我得到一个尺寸为 25x21 的 CvMat,它非常小。但是当我将图像保存为 png 格式并使用 LoadImage 将其加载回来时,我得到了尺寸为 429x509 的全尺寸图像。

有人可以告诉我如何将这个全尺寸图像从 numpy 数组获取到 CvMat 吗?我可以在代码中将图像从 numpy 数组转换为 png 格式而不使用 savefig() 保存吗?这就是我现在正在做的事情。

imgFigure = imshow(zeros((gridM,gridN)),cmap=cm.gray,vmin=VMIN,vmax=5,animated=True,interpolation='nearest',extent=[xmin,xmax,ymin,ymax])  
imgFigure.set_data(reshape(img,(gridM,gridN)))
draw()
fileName = '1p_'
fileName += str(counter)
fileName += ".png"
savefig(fileName,bbox_inches='tight',pad_inches=0.01,facecolor='black')

上面 img 的大小是 525,gridM 和 gridN 是 25 和 21。然后我加载这个图像使用:

img = cv.LoadImage(fileName, cv.CV_LOAD_IMAGE_GRAYSCALE)

现在 img 大小为 429x509。

最佳答案

您可以直接在您的 numpy 数组上使用 cv.fromarray(),无需在中间保存:

import cv
import numpy as np
a = np.arange(0,255,0.0255).reshape(50,200)
b = cv.fromarray(a)
cv.SaveImage('saved.png', b)
print b
#Output:
<cvmat(type=42424006 64FC1 rows=50 cols=200 step=1600 )>

numpy数组变成cvmat,大小不变。这是保存的图像:

enter image description here

关于opencv - 将具有图像数据的 numpy 数组转换为 CvMat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com