質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

3247閲覧

opencvのmedianblurでksizeが7以上の時にAssertion failedエラーが出てしまいます

abea

総合スコア32

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/30 11:54

オプティカルフローの上方向のフローのみを画像として可視化するプログラムを作成したのですが,ノイズ除去のためにmedianblurを用いた時にksizeが7以上のときに

OpenCV Error: Assertion failed (src.depth() == 0 && (cn == 1 || cn == 3 || cn == 4)) in medianBlur, file /io/opencv/modules/imgproc/src/smooth.cpp, line 3185
Traceback (most recent call last):
File "teratail.py", line 24, in <module>
thresh = cv2.medianBlur(thresh, 7)
cv2.error: /io/opencv/modules/imgproc/src/smooth.cpp:3185: error: (-215) src.depth() == 0 && (cn == 1 || cn == 3 || cn == 4) in function medianBlur

というエラーが出てしまいます.
ksizeが3や5の場合はエラーは出ません.このエラーの原因と解決法を教えてくださるとありがたいです.

python

1 2#!/usr/bin/env python 3# -*- coding: utf-8 -*- 4import cv2 5import numpy as np 6 7cap = cv2.VideoCapture(0) 8ret, frame1 = cap.read() 9frame1 = cv2.resize(frame1,(240,180)) 10prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) 11 12while True: 13 ret, frame2 = cap.read() 14 frame2 = cv2.resize(frame2,(240,180)) 15 next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY) 16 flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0) 17 18 #上向きのフローで,大きさ4以上のものだけを取得 19 flow[...,1][flow[...,1] >= -4] = 0 20 flow2 = -flow[...,1] 21 22 flow3 = cv2.normalize(flow2,None,0,255,cv2.NORM_MINMAX) 23 ret,thresh = cv2.threshold(flow3,200,255,cv2.THRESH_TOZERO) 24 #medianフィルタでノイズ除去 25 thresh = cv2.medianBlur(thresh, 7) 26 27 cv2.imshow('frame2',thresh) 28 cv2.imshow("original",frame2) 29 k = cv2.waitKey(15) & 0xff 30 if k == 27: 31 break 32 elif k == ord('s'): 33 cv2.imwrite('opticalfb.png',frame2) 34 cv2.imwrite('opticalhsv.png',rgb) 35 prvs = next 36 37# キャプチャをリリースして、ウィンドウをすべて閉じる 38cap.release() 39cv2.destroyAllWindows()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

使っているバージョンのCVのリファレンスを確認してください.
少なくとも,OpenCV2.3あたりのmedianBlurは,カーネルサイズが3or5と,それ以上とでは,サポートする画像形式が異なります.
(大きい場合はimage depthとしてCV_8Uしかサポートされない)

投稿2018/07/31 10:02

fana

総合スコア11658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

画像データが開示されていないので一般的な回答を。
OpenCV Error: Assertion failedの場合は多くはデータが関数に適していない場合。
エラーメッセージから画像データの’src.depth()’を最初に確認する(内容をprintするとか)。

まずはこれから。

投稿2018/07/30 19:47

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問