【问题标题】:OpenCV(4.2.0) (-206:Bad flag (parameter or structure field)) Unrecognized or unsupported array type in function 'cvGetMat'OpenCV(4.2.0)(-206:错误标志(参数或结构字段))函数'cvGetMat'中无法识别或不支持的数组类型
【发布时间】:2020-06-24 00:00:15
【问题描述】:

我正在尝试在 8000x4000 图像和 8000x4000 二进制掩码上进行修复,但出现以下错误。

错误回溯(最近的调用 最后)在 1 img = cv.imread('输入/200130_033344133.jpg') 2 掩码 = cv.imread('resources/maskX.png',0) ----> 3 dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA) 4 cv.imshow('dst',dst) 5 cv.waitKey(0)

错误:OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\array.cpp:2492: error: (-206:Bad flag (parameter or structure field)) Unrecognized or 函数“cvGetMat”中不支持的数组类型

这是我的代码。 我尝试将图像和掩码转换为 numpy 数组或 cv2.UMat。但一切都是徒劳的

img = cv.imread('input/200130_033344133.jpg')
mask = cv.imread('resources/maskX.png',0)
dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()

它不工作的任何原因? 我检查了图像是否正确加载。

【问题讨论】:

    标签: python opencv image-processing


    【解决方案1】:

    我在尝试修复时遇到了同样的错误。

    error: (-206:Bad flag (parameter or structure field)) Unrecognized or unsupported array type in function 'cvGetMat'
    

    然后我意识到我输入了错误的掩码格式而不是.jpg 我写了.png。所以cv2.imread() 正在加载一个空矩阵。当我修正错字时,错误消失了。

    所以请再次检查您的输入图像和掩码名称和格式。

    我认为这个错误是该图像无法正确加载的标志。

    真诚地, 恩斯

    【讨论】:

      【解决方案2】:

      我不知道出了什么问题,因为它在 Python 3.7 和 Mac OSX 上的 OpenCV 3.4 上运行良好。

      你导入简历了吗?你的蒙版做灰度后是不是多了1个通道?也许是 OpenCV 4 的问题?

      这对我有用。

      有划痕的图片:

      临时掩码:

      import cv2
      
      img = cv2.imread('zelda1_scratch.jpg')
      mask = cv2.imread('zelda1_scratch_mask.png',0)
      dst = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
      cv2.imwrite('zelda1_scratch_inpainted.jpg', dst)
      cv2.imshow('dst',dst)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        相关资源
        最近更新 更多