使用python对图像执行CLAHE时出错(-215)

使用python对图像执行CLAHE时出错(-215),python,opencv,deep-learning,spyder,Python,Opencv,Deep Learning,Spyder,以下是我在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 nam

以下是我在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)
我在运行代码时遇到以下错误:

回溯最近一次呼叫上次:

文件,第8行,在 lab=cv2.cvt颜色绿色,cv2.COLOR\u BGR2LAB

错误: C:\projects\opencv python\opencv\modules\imgproc\src\color.cpp:10724: 错误:-215 scn==3 | | scn==4&&depth==CV|8U | depth== 函数CV::cvtColor中的CV_32F


无法找到解决方案

在使用imread读取文件之前打印文件名。这样就可以清楚地知道程序正在读取哪个文件

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

提出条件

if bgr:
    ...

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

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

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


请尝试引用此链接。将反斜杠改为正斜杠为我解决了错误。

谢谢您的反馈,我会检查一下并回复您!是的,我明白你的意思,但我想单独使用绿色通道,而不是RGB图像,因为我只想在绿色通道图像上执行图像处理技术。在这种情况下,我应该在代码中编辑什么。。我基本上想在绿色图像上执行CLAHE。@KshitijZutshi。。。如果只想使用绿色通道,则无需转换颜色空间和分割实验室图像的通道。只需在使用green=bgr[:,:,1]语句提取的绿色通道上应用CLAHE即可……好吧,斜杠并不是问题。在我的例子中,我知道斜杠存在windows-python问题。。问题在于仅在给定RGB图像的单个绿色通道上执行图像处理技术。。
lab = cv2.cvtColor(bgr, cv2.COLOR_BGR2LAB)