从进程中排除特定维度的图像(OpenCV、Python)
使用下一个代码,我可以拍摄一张图像,并将其分离成包含感兴趣区域的各种较小的图像从进程中排除特定维度的图像(OpenCV、Python),python,opencv,image-processing,Python,Opencv,Image Processing,使用下一个代码,我可以拍摄一张图像,并将其分离成包含感兴趣区域的各种较小的图像 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') impor
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(高)像素
多谢各位
提示:使用此代码检测区域:首先不要写它们。只写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)