擅长:python、mysql、java
<p>这里是另一个解决方案,使用您建议的等高线。你知道吗</p>
<p>我使用了<a href="https://github.com/anbergem/opencv_wrapper" rel="nofollow noreferrer">OpenCV Wrapper library</a>来简化矩形并包含一些内容。转换成普通的OpenCV和Numpy并不难,只是有点乏味。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>import cv2 as cv
import numpy as np
import opencv_wrapper as cvw
image = cv.imread("path/to/image")
gray = cvw.bgr2gray(image)
thresh = cvw.threshold_otsu(gray)
# Returns Contour object
contours = cvw.find_external_contours(thresh)
# Create a rectangle representing the boundary 1 pixel in.
boundary = cvw.Rect(1, 1, image.shape[1] - 2, image.shape[0] - 2)
for contour in contours:
# Returns a Rect object
rect = contour.bounding_rect
if (
rect.tl not in boundary
or rect.tr not in boundary
or rect.bl not in boundary
or rect.br not in boundary
):
continue
# Create tracker
cvw.rectangle(image, rect, cvw.Color.RED, 1)
cv.imshow("Image", np.hstack([image, cvw.gray2bgr(thresh)]))
cvw.wait_key(0)
</code></pre>
<p>披露:我是OpenCV包装器的作者。你知道吗</p>