【问题标题】:Error (-215) while performing CLAHE on images with python使用 python 对图像执行 CLAHE 时出错 (-215)
【发布时间】:2018-07-18 13:44:13
【问题描述】:

以下是我在 Spyder 环境中输入的代码:

import os 
import cv2
import numpy as np
path1="E:\\academic\\FINAL YR PROJ\\PROJECT_DATASETS\\floyd_jan\\dr"
path2="E:\\academic\\FINAL YR PROJ\\PROJECT_DATASETS\\floyd_jan\\greendr"
names=[]
names=os.listdir(path1)
for i in names:
 bgr = cv2.imread(path1+"\\"+i,1)
 green = bgr[: , : , 1]
 lab = cv2.cvtColor(green, cv2.COLOR_BGR2LAB)
 lab_planes = cv2.split(lab)
 clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))

 lab_planes[0] = clahe.apply(lab_planes[0])
 lab = cv2.merge(lab_planes)
 bgr = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)
 cv2.imwrite(path2+"\\"+i,bgr)

运行代码时出现以下错误:

Traceback(最近一次调用最后一次):

文件“”,第 8 行,在 实验室 = cv2.cvtColor(绿色, cv2.COLOR_BGR2LAB)

错误: C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:10724: 错误:(-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) 在函数 cv::cvtColor

无法找出解决方案!

【问题讨论】:

    标签: python opencv deep-learning spyder


    【解决方案1】:

    问题出在调用颜色空间转换函数的部分

    green = bgr[: , : , 1]
    lab = cv2.cvtColor(green, cv2.COLOR_BGR2LAB)
    

    您正在使用灰度(单通道)图像green 执行色彩空间转换(cv2.COLOR_BGR2LAB),该转换适用于彩色图像(3 通道)。 您应该做的是使用bgr 代替green 作为cv2.cvtColor 的输入。

    lab = cv2.cvtColor(bgr, cv2.COLOR_BGR2LAB)
    

    【讨论】:

    • 是的,我明白你的意思,但我想单独使用绿色通道而不是 RGB 图像,因为我只想对绿色通道图像执行图像处理技术.在那种情况下,我应该在代码中编辑什么。我基本上想在绿色图像上执行 CLAHE。
    • @KshitijZutshi...好吧,如果你只想使用绿色通道,就不需要转换颜色空间和分割LAB图像的通道。只需在绿色通道上使用apply CLAHE,使用语句green = bgr[:,:,1]..提取。
    【解决方案2】:

    在读取文件之前用imread 打印文件名。这应该可以清楚地了解您的程序正在读取哪个文件。

    如果您确定目录中的所有文件都是图像,则很可能是由desktop.ini 引起的,imread 正在读取一个隐藏文件。在这种情况下,imread 将返回 None,而 bgr 将是 NoneTypecvtColor 函数无法理解。

    提出条件

    if bgr:
        ...
    

    编辑:可能,desktop.ini 不是问题。如果是这样,那么您应该在第 7 行尝试提取绿色通道时遇到错误。正如@sgarizvi 所指出的,您正在将灰度值传递给 cvtColor。

    【讨论】:

    • 感谢您的反馈,我会检查并回复您!
    【解决方案3】:

    尝试参考此链接,open cv error: (-215) scn == 3 || scn == 4 in function cvtColor。将反斜杠更改为正斜杠解决了我的错误。

    【讨论】:

    • 好吧,就我而言,斜线确实不是问题,我知道斜线的 windows-python 问题.. 问题在于仅在单个绿色通道上执行图像处理技术给定 RGB 图像..
    猜你喜欢
    • 2019-04-16
    • 2016-09-09
    • 1970-01-01
    • 2020-06-23
    • 2023-03-07
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多