python - 使用 openCV 裁剪简单边界框

标签 python opencv image-processing crop contour

我有一些带有黑色背景的图像,角落里有一些文字:

This is what it looks like

我正在尝试进行矩形裁剪,使其看起来像:

Goal

侧面的文字以及窗口尺寸的大小各不相同。我的代码没有正确裁剪,我做错了什么?

我尝试先删除右下角的文本并进行裁剪,但这也不起作用。

def crop_cont(img):
     gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
     _,thresh = cv2.threshold(gray,15,255,cv2.THRESH_BINARY)

     _, contours, _= cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
     cnt = contours[0]

     x,y,w,h = cv2.boundingRect(cnt)

     crop = img[y:y+h,x:x+w]

return crop

最佳答案

你的代码总体来说没问题。问题是您正在使用轮廓[0]。你必须找到正确的轮廓(有多个)。在此特定示例中,右侧轮廓是最大的轮廓。只需迭代所有找到的轮廓并找到面积最大的轮廓即可。

关于python - 使用 openCV 裁剪简单边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010916/

相关文章:

python - 如何识别Python中的默认方法值设置?

python - 使用 OpenCV (python) 时如何隐藏/禁用 ffmpeg 错误?

java - 如何检查轮廓是否相同?

c++ - SFML C++ Canny 边缘检测双边缘

matlab - 两个图像之间的相似性度量

javascript - 从文件夹 Laravel 5.2 中删除照片

python - 一笔事务中的 DELETE 和 CREATE Cypher 语句

python - 优化忽略某些标签值的损失函数

python - 有没有更好的方法来操作 pandas 数据框中的列名称?

c++ - 在 OpenCV C++ 中将图像区域设置为零的最佳方法?