6

私はこの問題を抱えています:

http://img38.imageshack.us/img38/5856/questao.png

Python と OpenCV を使用しています。侵食を使用して、触れているコインの輪郭を分離しようとしています。画像にしきい値を設定してから侵食を適用しようとしましたが、何も起こりませんでした。getStruturingElementドキュメントを読みましたが、と erode がどのように機能するかまだよくわかりません。

  1. 画像にしきい値を設定しました。

  2. しきい値処理された画像で侵食を使用しました。

それでも何もありません。私はここで何を間違って使用していますか?

コードの一部を次に示します。

import cv2, numpy as np

#1.Reads Image
objectImage = cv2.imread('P1000713s.jpg')

#2.Converts to Gray level
cvtcolorImage = cv2.cvtColor(objectImage,cv2.COLOR_RGB2GRAY)

#3.Thresholds
imgSplit = cv2.split(objectImage)
flag,b = cv2.threshold(imgSplit[2],0,255,cv2.THRESH_OTSU) 

#4.Erodes the Thresholded Image
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
cv2.erode(b,element)

cv2.imshow('Eroded',b)
4

3 に答える 3

2

画像を見ると、3x3 クロス マスクが常にしきい値領域内にある可能性があります。MORPH_CROSS を使用する代わりに、MORPH_ELLIPSE を使用します。

1 回の呼び出し後もコインがまだ「接触」している場合は、浸食のために複数の呼び出しをいつでも実行できますが、これはイメージに破壊的な影響を与えることに注意してください。

于 2012-11-17T23:31:52.483 に答える
2

これは非常に古いスレッドであることは知っていますが、私の答えが誰かを助けることができると思いました. 私は同じ問題に直面していました。侵食を使用して等高線を分離すると、常に形状プロパティ情報が失われます。私はこのリンクをたどりました:流域セグメンテーション OpenCVでは、流域セグメンテーションが輪郭を分離するために使用され、結果は非常に正確です。

于 2019-02-18T10:09:40.063 に答える