【问题标题】:Exclude images of certain dimensions from process (OpenCV, Python)从进程中排除某些尺寸的图像(OpenCV、Python)
【发布时间】:2017-09-13 17:16:07
【问题描述】:

使用下一个代码,我可以拍摄图像并将其分成包含感兴趣区域的多个较小图像。

import cv2
import sys

sys.path.insert(0, 'C:\\Users\\Bob\\Desktop\\Project')
sys.path.insert(0, 'C:\\Users\\Bob\\Desktop\\Project\\FOLDER')
sys.path.insert(0, 'C:\\Users\\Bob\\Desktop\\Project\\READER')

import FOLDER.folders
import READER.extractor

timestr = FOLDER.folders.timestr

################## AREA 1 ##################

# Load the image
img = cv2.imread('C:\\Users\\Bob\\Desktop\\Destination\\' + str(timestr) + '\\EXTRACTED\\' + 'area1.png')

# convert to grayscale
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# smooth the image to avoid noises
gray = cv2.medianBlur(gray,5)

# Apply adaptive threshold
thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2)
thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)

# apply some dilation and erosion to join the gaps - change iterations value to detect more or less area's
thresh = cv2.dilate(thresh,None,iterations = 15)
thresh = cv2.erode(thresh,None,iterations = 15)

# Find the contours
image,contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# For each contour, find the bounding rectangle and draw it
idx =0

for cnt in contours:
    idx += 1
    x,y,w,h = cv2.boundingRect(cnt)
    roi = gray[y:y + h, x:x + w]
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
    cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2)
    cv2.imwrite('C:\\Users\\Bob\\Desktop\\Destination\\' + str(timestr) + '\\EXTRACTED\\ex_area1' + str(idx) + '.png',roi)

这是一个例子:

图片已加载

输出

代码还给出了一些我不想要的次要图像(比如说人工制品)。所有这些图片都低于某些特定尺寸。

我的问题是:我必须在上面的代码中添加什么来删除这些图像?要删除以下尺寸的图像,例如:250(宽度)X 60(高度)像素?

谢谢

提示:使用此代码检测区域:Improve text area detection (OpenCV, Python)

【问题讨论】:

    标签: python opencv image-processing


    【解决方案1】:

    一开始就不要写它们。只写60*250以上的图片。

       for cnt in contours:
            idx += 1
            x,y,w,h = cv2.boundingRect(cnt)
            roi = gray[y:y + h, x:x + w]
            cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
            cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2)
            if (w*h>250*60):    #change this for proper settings
               cv2.imwrite('C:\\Users\\Bob\\Desktop\\Destination\\' + str(timestr) 
                + '\\EXTRACTED\\ex_area1' + str(idx) + '.png',roi)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2017-01-16
      • 1970-01-01
      • 2013-07-19
      • 2020-01-11
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多