バイナリ イメージで輪郭を見つけようとしましたが、cvFindContours を実行しようとすると、そのエラー メッセージが表示されます
トレースバック (最新の呼び出しが最後): ファイル "convert.py"、30 行目、輪郭内 = cvFindContours(img2, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE) ファイル "/usr/lib/pymodules/python2.7/opencv/ cv.py"、580 行目、cvFindContours count、seq = cvFindContoursUntyped( *args ) ファイル "/usr/lib/pymodules/python2.7/opencv/cv.py"、6521 行目、cvFindContoursUntyped return _cv.cvFindContoursUntyped(* args) RuntimeError: openCV エラー: ステータス=入力配列のサイズが正しくありません 関数名=cvStartFindContours エラー メッセージ= ファイル名=/build/buildd/opencv-2.1.0/src/cv/cvcontours.cpp 行=205
新しくインストールしたUbuntu 11.10とOpencv 2.3.1を使用しています。
ここに私のソースコードがあります
from opencv.cv import *
from opencv.highgui import *
image = cvLoadImage('test.png')
def getthresholdedimg(image):
size = cvSize(640, 480)
imghsv=cvCreateImage(cvGetSize(image),8,3)
cvCvtColor(image,imghsv,cv.CV_BGR2HSV)
imgblue=cvCreateImage(cvGetSize(image),8,1)
imgblue2=cvCreateImage(cvGetSize(image),8,1)
imgthreshold=cvCreateImage(cvGetSize(image),8,1)
cvInRangeS(imghsv,cvScalar(100,100,100),cvScalar(120,255,255),imgblue)
cvInRangeS(imghsv,cvScalar(100,100,100),cvScalar(120,255,255),imgblue2)
cvAdd(imgblue,imgblue,imgthreshold)
return imgthreshold
cvFlip(image,image,1)
cvSmooth(image, image, CV_GAUSSIAN, 3, 0)
imgthresh=getthresholdedimg(image)
cvErode(imgthresh,imgthresh,None,3)
cvDilate(imgthresh,imgthresh,None,10)
storage = cvCreateMemStorage(0)
img2=cvCloneImage(imgthresh)
contour = cvFindContours(img2, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
元のバイナリ イメージ
元画像 http://tinypic.com/r/34rul9x/6
青でフィルター処理されたバイナリ イメージ http://tinypic.com/r/ifbotx/6