首页 > 解决方案 > 将 numpy 像素矩阵转换为 OpenCv 图像

问题描述

我想将包含灰度图像的 numpy 数组(形状:48,48)转换为 Cv Mat 或 Img 对象。

我已经尝试过 cv2.imdecode 函数,但它只是返回了一个空矩阵,如文档中所述,但它没有告诉我为什么它不起作用。

    data = prep_data()

    img_raw = np.array(data[1][0])
    print(img_raw)
    img = cv2.imdecode(img_raw, cv2.CV_LOAD_IMAGE_COLOR)
    cv2.imshow('image',img)
    cv2.waitKey(0)

这是我得到的异常,但我已经“发现”这个异常是因为 img obj 是空的。例外: cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: error: (-215) size.width>0 && size.height>0 in function cv::imshow

标签: pythonopencv

解决方案


在 Python 中,OpenCV 图像是 NumPy 数组。因此,这取决于您的prep_data函数返回的内容,但您可能不需要调用cv2.imdecodeprint(img_raw)在您的代码中返回什么?无论如何,尝试直接显示img_raw:

data = prep_data()

img_raw = np.array(data[1][0])
cv2.imshow('image',img_raw)
cv2.waitKey(0)

推荐阅读