Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数cvtColor中的scn==3 | | scn==4_Python_Opencv - Fatal编程技术网

Python 函数cvtColor中的scn==3 | | scn==4

Python 函数cvtColor中的scn==3 | | scn==4,python,opencv,Python,Opencv,我正在尝试训练一个神经网络模型,这是图像中心代码的一部分,问题是当我运行这段代码时- def centering_image(img): size = [256,256] img_size = img.shape[:2] # centering row = (size[1] - img_size[0]) // 2 col = (size[0] - img_size[1]) // 2 resized = np.zeros(list(size) + [img.shape[

我正在尝试训练一个神经网络模型,这是图像中心代码的一部分,问题是当我运行这段代码时-

def centering_image(img):
  size = [256,256]

  img_size = img.shape[:2]

  # centering
  row = (size[1] - img_size[0]) // 2
  col = (size[0] - img_size[1]) // 2
  resized = np.zeros(list(size) + [img.shape[2]], dtype=np.uint8)
  resized[row:(row + img.shape[0]), col:(col + img.shape[1])] = img

  return resized


x = []
for i, file_path in enumerate(file_paths):
  #read image
  img = cv2.imread(file_path)
  img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

  #resize
  if(img.shape[0] > img.shape[1]):
    tile_size = (int(img.shape[1]*256/img.shape[0]),256)
  else:
    tile_size = (256, int(img.shape[0]*256/img.shape[1]))

  #centering
  img = centering_image(cv2.resize(img, dsize=tile_size))

  #out put 224*224px 
  img = img[16:240, 16:240]
  x.append(img)

x = np.array(x)
我得到这个错误-

error                                     Traceback (most recent call 
last)
<ipython-input-11-2a14d86a9a00> in <module>()
 17     #read image
 18     img = cv2.imread(file_path)
---> 19     img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
 20 
 21     #resize

error: /io/opencv/modules/imgproc/src/color.cpp:9716: error: (-215) 
scn == 3 || scn == 4 in function cvtColor`
错误回溯(最近的调用)
最后)
在()
17#读取图像
18 img=cv2.imread(文件路径)
--->19 img=cv2.CVT颜色(img,cv2.COLOR_BGR2RGB)
20
21#调整大小
错误:/io/opencv/modules/imgproc/src/color.cpp:9716:错误:(-215)
函数cvtColor中的scn==3 | | scn==4`
有没有办法解决这个问题? 提前感谢

您加载的图像似乎有四个通道。因此,从BGR到RBG的颜色转换不起作用,因为它需要三个通道

您可以使用
cv2.COLOR\u BGRA2BGR
标志


错误表明
cvtColor
带有
COLOR\u BGR2RGB
的图像需要有3个或4个通道,但得到了不同的结果。因此,您应该使用
print img.shape

仔细检查通道数。关于我可以更改什么,您可以尝试
cv2.COLOR\u BGRA2BGR
。哦,我没有正确阅读错误消息。它表示您的图像没有3或4个通道。所以可能是灰度图像。检查打印图像。形状。这是彩色图像,8661154,3)好的,这很奇怪。查看它只是检查通道的数量。您的代码表明您正在加载多个图像。在imread测试图像是否已成功加载后,您是否可以再次检查它们是否有3个或4个通道?是否有任何特定的原因导致向下投票?或者只是无聊。您的列表中可能有非法路径或非图像文件。