opencv-python 在图像的特定区域绘制轮廓并找到最外层轮廓

Drawing a contour in a specific region of an image and finding the outermost contour in opencv-python

我的代码从视频中选择一个帧,然后用从同一视频中选择的背景帧减去该帧。然后将其转换为灰度、模糊,然后应用图像阈值。然后绘制输出此 image 的轮廓。但是,我只想拥有最外层的轮廓,也不想在 y=500 以上绘制任何轮廓。我该如何实施?

轮廓码:

contours, hierarchy = cv2.findContours(tframe,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
image = cv2.drawContours(sampleframe, contours, -1, (0, 255, 0), 2) 

我已经尝试使用 cv2.dilate ,它在足够的迭代中工作以去除内部轮廓,但迭代导致轮廓被高估,这是不希望的。

如果按面积大小过滤掉轮廓,则可以保留最大的轮廓。请检查此 link:https://docs.opencv.org/3.4/dd/d49/tutorial_py_contour_features.html

对于第二个问题,您可以将 y 轴上的框架剪切为低于 500。