【问题标题】:Laplacian opencv fails with cv2.error: OpenCV(4.1.2)Laplacian opencv 因 cv2.error: OpenCV(4.1.2) 而失败
【发布时间】:2020-05-04 20:10:03
【问题描述】:

我正在尝试将拉普拉斯算子应用于中值滤波器输出,以通过稍后的处理获得更清晰的图像。代码 sn-p 如下:

img = plt.imread('example.png')
img_res = cv.resize(img,(256,256))
gray_image = cv.cvtColor(img_res, cv.COLOR_BGR2GRAY)
median_img = median_filter(gray_image, 5)
# Calculate the Laplacian
lap_img = cv.Laplacian(median_img,cv.CV_64F)

输入图像是 RGB 医学图像。运行此代码时遇到以下错误:

 cv2.error: OpenCV(4.1.2) C:/projects/opencv-python/opencv/modules/imgproc/src/filter.simd.hpp:3175: error: (-213:The function/feature is not implemented) Unsupported combination of source format (=5), and destination format (=6) in function 'cv::opt_AVX2::getLinearFilter'

数据集中的任何图像都会出现此错误。你能指出可能是什么问题吗?灰度图像的示例来自此link

【问题讨论】:

    标签: python python-3.x opencv matplotlib image-processing


    【解决方案1】:

    不要使用两个不同的库(matplotlibopencv),而是在执行图像处理时一次使用一个库。原因是因为这两个库使用不同的格式来存储图像。 matplotlib 使用 RGB 约定,而 opencv 使用 BGR。我的猜测是您遇到此错误是由于使用matplotlib 加载图像,然后使用opencv 执行操作。简单地说,使用cv2.imread() 而不是plt.imread() 加载图像似乎可以解决问题

    输入->输出

    import cv2
    from scipy.ndimage.filters import median_filter
    import numpy as np
    
    img = cv2.imread('1.png')
    gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    median_img = median_filter(gray_image, 5)
    # Calculate the Laplacian
    lap_img = cv2.Laplacian(median_img,cv2.CV_64F).astype(np.uint8)
    
    cv2.imshow('lap_img', lap_img)
    cv2.imwrite('lap_img.png', lap_img)
    cv2.waitKey()
    

    【讨论】:

    • 只是补充一点,我发现结果与链接中显示的不完全一样。我发现它相当倒置或松散地减去图像。可能是什么问题?
    • 我也无法使用他们的代码获得相同的结果。也许您应该尝试查看其他教程
    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2021-09-27
    • 2023-02-01
    相关资源
    最近更新 更多