擅长:python、mysql、java
<p>问题如下:</p>
<p>(1)<a href="http://i.stack.imgur.com/skM2L.png" rel="nofollow">image</a>太糟糕了,我不得不减少<code>arcLength()*0.08</code>,而不是<code>arcLength()*0.1</code></p>
<p>(2)你混淆了im和img,小心。</p>
<pre><code>import cv2
import numpy as np
from matplotlib import pyplot as plt
path = "/Users/summing/Desktop/skM2L.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(ret, thresh) = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
edge = cv2.Canny(thresh, 100, 200)
(cnts, _) = cv2.findContours(edge.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
total = 0
for c in cnts:
epsilon = 0.08 * cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, epsilon, True)
cv2.drawContours(img, [approx], -1, (0, 255, 0), 4)
total += 1
print "I found {0} RET in that image".format(total)
cv2.imshow("Output", img)
cv2.waitKey(0)
exit()
</code></pre>
<p>代码工作为我找到了。希望有帮助。这是<a href="http://i.stack.imgur.com/uovtb.png" rel="nofollow">result</a>。</p>