web-dev-qa-db-ja.com

Python-OpenCV cv2 OpenCVエラー:不明な関数、ファイル.. \ .. \ .. \ modules \ imgproc \ src \ color.cppでアサーションが失敗しました(scn == 3 || scn == 4)

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
27

関数cv2.cvtColorを適用する前に、入力画像に3つまたは4つのチャンネルが必要であると書かれています。

print im.shapeで関数を適用する前に画像の形状を確認してください。結果がNone type(ほとんどの場合、これが問題です)の場合、ほとんどの場合パスが正しくないため、イメージは正しくロードされていません。

重要なのは、画像にはrowscolumnsdepthの3つの次元が必要であることです。

85
Abid Rahman K

PIカメラを搭載したRaspberry Piでこのエラーが発生する場合は、最初に次のコマンドを実行してください。

Sudo modprobe bcm2835-v4l2
1
Xerxel

1回目の印刷falseと表示されている場合、画像は適切に撮影されていません。 Trueが表示される場合このコマンドを試してください-Sudo modprobe bcm2835-v4l2または/ etc/modulesファイルで、下部にbcm2835-v4l2を追加します。

1
Argha Sen