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