【问题标题】:Python-OpenCV cv2 OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cppPython-OpenCV cv2 OpenCV 错误:未知函数中的断言失败 (scn == 3 || scn == 4),文件 ..\..\..\modules\imgproc\src\color.cpp
【发布时间】:2014-01-16 07:41:17
【问题描述】:

我正在尝试使用 cv2 在 python 中学习轮廓。

我尝试了教程指南中给出的以下代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

im = cv2.imread('C:\Users\Prashant\Desktop\test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
img = cv2.drawContour(im, contours, -1, (0,255,0), 3)
cv2.imshow('Image1',img)

我收到此错误:

File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp, line 3402
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
   execfile(filename, namespace)
 File "C:/Users/Prashant/.spyder2/.temp.py", line 15, in <module>
   imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
 cv2.error: ..\..\..\modules\imgproc\src\color.cpp:3402: error: (-215) scn == 3 || scn == 4

【问题讨论】:

    标签: python-2.7 numpy opencv image-processing


    【解决方案1】:

    它说在应用cv2.cvtColor 函数之前,您的输入图像应该有 3 或 4 个通道。

    所以在应用print im.shape 的功能之前检查您的图像形状。如果结果是None type(大多数时候,这就是问题所在),你的图片没有正确加载,很可能是因为你的路径不正确。

    关键是你的图像应该有 3 个维度,rowscolumnsdepth

    【讨论】:

    • @Abid 恭喜获得opencv 金色徽章。
    • 谢谢@karlphillip。我以为你需要一个朋友来分享黄金:)
    • 更改图像并非如此。如果它是一个视频文件,并且您试图捕获每一帧并且在某些帧中找不到形状,那么您不应该仅仅因为某些帧没有正确的形状属性而更改整个视频文件。你最好处理它
    • 感谢它确实有效,图像没有正确加载。
    • 图像的深度是多少?我的加载正确,但只有 2 个频道?
    【解决方案2】:

    我遇到了这个问题,找不到解决方案,但在网络上,它可以正常工作。我的解决方案几乎很有趣——你不能有两个流。我关闭了网络流,然后就没事了!

    【讨论】:

      【解决方案3】:

      第一次打印。 如果显示为假,则说明您的图像未正确拍摄。 如果它显示 True 试试这个命令 - sudo modprobe bcm2835-v4l2 或者在 /etc/modules 文件的底部添加 bcm2835-v4l2。

      【讨论】:

        【解决方案4】:

        如果您在带有 PI 摄像头的树莓派上遇到此错误,请先尝试运行此命令:

        sudo modprobe bcm2835-v4l2
        

        【讨论】:

          猜你喜欢
          • 2015-09-26
          • 1970-01-01
          • 1970-01-01
          • 2014-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-21
          • 1970-01-01
          相关资源
          最近更新 更多