web-dev-qa-db-ja.com

OpenCV TypeError:引数 'src'にcv :: UMatが必要です-これは何ですか?

免責事項:巨大なopenCV noob

トレースバック(最新の呼び出しが最後):

ファイル "lanes2.py"、22行目、

canny = canny(lane_image)

Cannyのファイル "lanes2.py"、5行目

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)

TypeError:引数 'src'にはcv :: UMatが必要です

「src」は正確には何を指しているのですか?

17
autonocat

srcは_cv2.cvtColor_の最初の引数です。

あなたが得ているエラーはそれが正しい形式ではないためです。 cv2.Umat()np.float32()と機能的に同等であるため、コードの最終行は次のようになります。

_gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
_
14
Varun Mathur
gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)

UMatは Transparent API(TAPI) の一部であり、CPUおよびOpenCL実装用の1つのコードを記述するのに役立ちます。

8
Nuzhny

以下は、numpyから使用できます。

import numpy as np 
image = np.array(image)
3
Avi Avidan

あなたのコードが問題ではなく、これは完全に問題ありません:

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)

問題は、imgUMatがNoneであることです。そのため、イメージのロード時におそらく間違いを犯しました。

imgUMat = cv2.imread("your_image.jpg")

入力した画像パスが間違っているようです。

3
Maximilian

cannyはあなた自身の関数ですか?その中でOpenCVの Canny を使用していますか?はいの場合、Cannyの適切な引数をフィードするかどうかを確認します-最初のCanny引数は、次の基準を満たしている必要があります。

  • タイプ:_<type 'numpy.ndarray'>_
  • dtype:dtype('uint8')
  • シングルチャネルまたは単純な処理:grayscale、2D配列、つまり、そのshapeは2 -Tupleでなければなりませんints(Tupleはちょうど2つの整数を含む)

それぞれ印刷して確認できます

_type(variable_name)
variable_name.dtype
variable_name.shape
_

_variable_name_をCannyの最初の引数としてフィードする変数の名前に置き換えます。

1
Daweo

imstreams パッケージの videostream がフレームを認識しない、または空のフレームを提供しない場合、このエラーが発生することがあります。その場合、解決策は、そのような不良フレームがある理由、またはopencv2の標準のVideoCapture(0)メソッドを使用する理由を理解することです。

0
Oysiyl

これを最初に追加するだけです:image = cv2.imread(image)

0
Amar Sagat

私はファイルへの書き込み/読み取りによって気が狂った。私はcv.imreadがそれを必要なフォーマットに入れると思いました。 anki Vector SDKプログラム用のこのコードですが、アイデアはわかります。

tmpImage = robot.camera.latest_image.raw_image.save( 'temp.png')
pilImage = cv.imread( 'temp.png')

0
Geo

これは一般的なエラーであり、使用するデータのタイプ間にmismatchがある場合にスローされます。たとえば、opencvで画像のサイズを変更しようとすると、同じエラーが発生しました。 ここ はそれについての議論です。

0

しかし、これをcifar-10でどのように行うのですか?私はファイルを読み込んでhsvに変換しようとしていますが、機能しません。同じ間違いを私に与えた:」
Elif self.type == 'cifar-10':data = [] labels = [] print( "Reading")for file_ in tqdm(listdir(self.root_dir)):if file_.split( ' _ ')[0] ==' data ':dict = unpickle(join(self.root_dir、file_))data.extend(dict [b'data'])labels.extend(dict [b'labels '])data = cv2。 cvtColor(data、cv2。COLOR_RGB2HSV) '' '

0
vanetoj