OpenCV Python层与Caffe/Digits框架不兼容

2024-10-01 02:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了下面的python层并将其添加到LeNet架构中。但在建立模型时,它给出了一个错误。我将使用Numpy应用Python层,但是当我使用OpenCV时,它会给出一个错误。 接下来我从日志文件中添加我的代码和相应的错误。在

import cv2
import caffe
import random

def doEqualizeHist(img): img = img.astype(np.uint8) img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) return cv2.equalizeHist(img)

class EqualizeLayer(caffe.Layer): def setup(self, bottom, top): assert len(bottom) == 1, 'requires a single layer.bottom' assert bottom[0].data.ndim >= 3, 'requires image data' assert len(top) == 1, 'requires a single layer.top'

def reshape(self, bottom, top): # Copy shape from bottom top[0].reshape(*bottom[0].data.shape) def forward(self, bottom, top): # Copy all of the data top[0].data[...] = bottom[0].data[...] for ii in xrange(0, top[0].data.shape[0]): imin = top[0].data[ii, :, :, :].transpose(1, 2, 0) top[0].data[ii, :, :, :] = doEqualizeHist(imin).transpose(2, 0, 1) def backward(self, top, propagate_down, bottom): pass

错误消息:0812 06:41:53.452097 14355净利润:723]忽略源层列车数据 OpenCV错误:在cvtColor、file/build/OpenCV SviWsf/OpenCV-2.4.9.1+dfsg/modules/imgproc/src中断言失败(scn==3 | | scn==4)/颜色.cpp,第3737行 回溯(最近一次呼叫): 文件“/var/lib/digits/jobs/20170812-064148-f44d/digits_python_图层.py“,第27行,前进 顶部[0].data[ii,:,:,:]=doEqualizeHist(imin).转置(2,0,1) 文件“/var/lib/digits/jobs/20170812-064148-f44d/digits_python_图层.py“,第8行,在doEqualizeHist中 img=cv2.cvt颜色(img,cv2.COLOR_rgb2灰色) cv2.error:/build/opencv SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/颜色。cpp:3737:错误:(-215)scn==3 | | scn==4,在函数cvtColor中


Tags: 文件importselfimgdatatopdef错误
1条回答
网友
1楼 · 发布于 2024-10-01 02:20:46

为了将来参考,OpenCV中的“断言失败”错误消息意味着您向函数传递了无效数据。{cd1>在这种情况下,断言失败了。要确切地知道这意味着什么,您可以查看断言失败的源文件:modules/impgproc/src/color.cpp,并在第3737行检查它发生的函数:cvtColor。看看变量scn代表什么。在

在您的例子中,问题在于您将img转换为单通道格式,然后尝试将其从RGB转换为灰度。这种转换首先断言输入是3通道或4通道格式。事实并非如此,断言失败了。在

相关问题 更多 >