2011-06-03 17 views
5

私はpython-openCVを使用しています。ソーベルエッジ検出を使用する場合、私は、次のアサーションエラーを取得:openCV:ソーベルエッジ検出でアサーションエラーが発生する

src.size() == dst.size() && src.channels() == dst.channels() && ((src.depth() == CV_8U && (dst.depth() == CV_16S || dst.depth() == CV_32F)) || (src.depth() == CV_32F && dst.depth() == CV_32F)) 

を私はCreateImage()を使用してdestを作成し、それがsrcと同じサイズとチャンネルを持っています。 srcとdestの両方の深さもIPL_DEPTH_8Uです。私もLoadImageM()を使用してイメージをロードしようとしました。そのため、定数はCV_*ですが、それは役に立ちませんでした。

また、IPL_DEPTH_8U == CV_8Ufalseであることがわかりました。

+0

ええ、このエラーが発生しました。私はOpenCVが大好きですが、私は彼らのエラーメッセージが嫌いです。これは非常に役に立たない、特に初心者のためのものですが、基本的には、ソースイメージと宛先イメージの形式が同じではないことを意味します(ピクセルサイズやチャネル数が異なるなど)。 – Cerin

答えて

5

私はOpenCVのに初心者のためのソリューション少しトリッキーが見つかりました:

src = cv.LoadImageM('src.png', cv.CV_LOAD_IMAGE_GRAYSCALE) 
dest = cv.CreateMat(src.height, src.width, cv.CV_16S) 
cv.Sobel(src, dest, 1, 1) 

注意すべき重要なことは、操作に必要な画像フォーマットは明らかにAPIリファレンスに記載されていないということであり、1は非常に細心の注意を払う必要があります生成されたエラーに変換します。

関連する問題