Opencv 将具有图像数据的numpy阵列转换为CvMat

Opencv 将具有图像数据的numpy阵列转换为CvMat,opencv,numpy,Opencv,Numpy,我有一个numpy数组中的图像,我使用savefig保存该图像,然后使用opencv loadImage函数将图像加载到CvMat。但是我想删除这个保存图像的步骤 我的Numpy图像大小是25x21,如果我使用fromArray函数 im=cv.fromarray(asarray(img)) 我有一个尺寸为25x21的CvMat,它非常小。但是,当我将图像保存为png格式并使用LoadImage将其加载回时,我得到的是大小为429x509的全尺寸图像 有人能告诉我如何从numpy阵列到CvMat

我有一个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 )>
导入cv
将numpy作为np导入
a=np.arange(0255,0.0255)。重塑(50200)
b=来自数组的cv(a)
cv.SaveImage('saved.png',b)
打印b
#输出:
numpy阵列将变为cvmat,并且大小不变。这是保存的图像:


欢迎使用SO:)如果我的答案没有帮助,请显示您的代码,以确定问题所在,干杯。@fraxel我无法在评论中正确设置代码格式,因此编辑了问题并在那里添加了我的代码。