使用Python OpenCV从图像中删除边框

我有带有边框的图像,如下所示。我可以使用OpenCV或python删除图像中的边框吗?

我使用以下代码进行裁剪,但是没有用。

copy = Image.fromarray(img_final_bin)
try:
    bg = Image.new(copy.mode,copy.size,copy.getpixel((0,0)))
except:
    return None
diff = ImageChops.difference(copy,bg)
diff = ImageChops.add(diff,diff,2.0,-100)
bbox = diff.getbbox()
if bbox:
    return np.array(copy.crop(bbox))

使用Python OpenCV从图像中删除边框

使用Python OpenCV从图像中删除边框

foevermore 回答:使用Python OpenCV从图像中删除边框

这是使用阈值+轮廓滤波的方法。这个想法是阈值以获得二进制图像。从这里我们找到轮廓并使用最大面积阈值进行过滤。我们将通过此滤镜的所有轮廓绘制到空白蒙版上,然后执行按位运算以删除边框。这是删除边框的结果

enter image description here

import cv2
import numpy as np

image = cv2.imread('1.png')
mask = np.zeros(image.shape,dtype=np.uint8)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

cnts = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    if area < 10000:
        cv2.drawContours(mask,[c],-1,(255,255),-1)

mask = cv2.cvtColor(mask,cv2.COLOR_BGR2GRAY)
result = cv2.bitwise_and(image,image,mask=mask)
result[mask==0] = (255,255)

cv2.imwrite('result.png',result)
cv2.waitKey()
,

您还可以使用Werk24的API来阅读技术图纸:www.werk24.io


from werk24 import W24TechreadClient,W24AskCanvasThumbnail

async with W24TechreadClient.make_from_env() as session:
    response = await session.read_drawing(document_bytes,[W24AskCanvasThumbnail()])

它还允许您提取度量等。请参阅: Fully read

本文链接:https://www.f2er.com/3124023.html

大家都在问