python找图片特定区域_使用Python OpenCV,如何提取特定颜色边界框内的图像区域?...

给出一张我手工绘制的彩色边框的照片,

我想复制/裁剪图像内容,以保持内容在边框内。在

目标是检测颜色边界框,然后使用它告诉脚本复制/裁剪的位置。在

我试过轮廓,但似乎我需要额外的步骤。在

或许可以:检测有界区域

找到最小的区域(框线可以是可变厚度的,所以我需要内部边界区域-边界最终将是物理世界中的彩色海报板剪切框)

脚本为该区域创建一个遮罩

抓取图像

还有更好的办法;

最好的办法是什么?

Python和OpenCV会使用什么方法?在

根据我目前的实验代码(我正在探索通过轮廓大小获得面积,但我认为我需要更好的轮廓代码):import numpy as np

import cv2

image_dir = "/Users/admin/Documents/dir/dir2/"

im = cv2.imread(image_dir+'test_image_bounded.png')

imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(imgray,176,190,43)

#ret,thresh = cv2.threshold(imgray,127,255,0)

contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

areaArray = []

count = 1

for i, c in enumerate(contours):

area = cv2.contourArea(c)

areaArray.append(area)

#first sort the array by area

sorteddata = sorted(zip(areaArray, contours), key=lambda x: x[0], reverse=True)

#find the nth largest contour [n-1][1], in this case 2

largestcontour = sorteddata[0][2]

#draw it

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

cv2.drawContours(im, largestcontour, -1, (255, 0, 0), 2)

cv2.rectangle(im, (x, y), (x+w, y+h), (0,255,0), 2)

cv2.imwrite(image_dir+'output.jpg', im)

编辑-----------------------------------

我通过颜色检测、形态分析和第二大阈值得到了一些很好的结果

以下是一些相关代码:

^{pr2}$

你可能感兴趣的:(python找图片特定区域)