利用python-opencv实现彩色图像直方图均衡化

利用python-opencv实现彩色图像直方图均衡化,python,python-2.7,opencv,Python,Python 2.7,Opencv,错误:断言失败0

错误:断言失败0 由于没有捕获返回值,因此通道未初始化

>>> import cv2
>>> help(cv2.split)
Help on built-in function split in module cv2:

split(...)
    split(m[, mv]) -> mv
所以它应该看起来像:

channels = cv2.split(img2)

另外,请避免使用旧的cv api,而应始终坚持使用cv2。使用cv2.VideoCapture,而不是cv.CaptureFromCAM

此处的分割错误。它返回频道

由于没有捕获返回值,因此通道未初始化

>>> import cv2
>>> help(cv2.split)
Help on built-in function split in module cv2:

split(...)
    split(m[, mv]) -> mv
所以它应该看起来像:

channels = cv2.split(img2)
另外,请避免使用旧的cv api,而应始终坚持使用cv2。使用cv2.VideoCapture,而不是cv.CaptureFromCAM

而不是使用拆分和合并,利用numpy切片

img2[:, :, 0] = cv2.equalizeHist(img2[:, :, 0]) 
# or run a small loop over each channel
不要使用拆分和合并,而是利用numpy切片

img2[:, :, 0] = cv2.equalizeHist(img2[:, :, 0]) 
# or run a small loop over each channel

berak:这可能是一个不恰当的评论,但实际上我正在尝试学习基于python的opencv,我无法区分旧的cv api和新的cv api……你能告诉我,在检查opencv文档中的方法细节时,如何知道哪一个是新的……顺便说一句,我对python也是新手,一点也不恰当。CV2是OpenCV的C++ API上的新的APILATE,并且使用NUMPY数组来处理图像,CV是OpenCV不推荐的C-API的老版本。两者本质上是不兼容的,而旧版本在将来将不可用,因此请使用cv2。怎么知道?嗯,我想是前缀吧?@berak:好的,谢谢。我想我明白你的意思了…我们可以通过查看它的cv2或cv来区分。berak:这可能是一个不恰当的评论,但实际上我正在尝试学习基于python的opencv,我无法区分旧的cv api和新的cv api…你能告诉我,如何知道哪一个是新的,同时在opencv文档中检查方法的细节…顺便说一句,我对python也不熟悉。CV2是OpenCV的C++ API上的新的APILATE,并且使用NUMPY数组来处理图像,CV是OpenCV不推荐的C-API的老版本。两者本质上是不兼容的,而旧版本在将来将不可用,因此请使用cv2。怎么知道?嗯,我想是前缀吧?@berak:好的,谢谢。我想我明白你的意思了…我们可以通过看它的cv2或cv来区分。这与问题完全无关。这是实际的解决方案,你只是看不到。这与问题完全无关。这是实际的解决方案,你只是看不到而已。