在工程设计中,在全球化工业合作中,大家将CAD图纸扫描成图片进行传递和交流。即使找厂家生产,一般也是提供扫描版的图片格式图纸。对于工艺人员,一般拿着原图纸,进行绘制。这个工作没有任何技术含量,就是抄作业,有时还容易抄错。 对于现在将图片或PDF格式的工程图纸,有一些专业软件,WPS就带该功能,他能将CAD图纸打印生成的PDF文件,完美的转换成dwg文件,直接可以进行编辑修改。而扫描或拍照的文件,无法进行转换。而现在的软件完全可以智能的进行转化。为此,学习python,希望能写一个这样的软件。 今天,通过学习python,参考网上的代码,并结合豆包AI、百度AI、CSDNAI给出的代码,不停的调试,终于完成图片打开,分析识别直线,显示直线,打印直接的起点功能。 未完成:1、部分直线无法识别,识别率我估计在50%。 2、没有保存为DWG文件,总是显示文件为空。 无论如何,总是有点收获。代码如下: 如有高人,请将代码指点一二,完成上述两点功能,不胜感激。 # -*- coding:utf-8 -*- """ 作者:GE 日期:2024/7/30 文件内容... """ import cv2 # import ezdxf import numpy as np def detect_and_draw_lines(image_path): # 读取图像 image = cv2.imread(image_path) # 转换为灰度图像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 边缘检测 edges = cv2.Canny(gray_image, 150, 150, apertureSize=3) # 直线检测 lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 250, minLineLength=100, maxLineGap=1) # doc = ezdxf.new('R2010') # msp = doc.modelspace() # 绘制直线到 DWG 文件 # for line in lines: # x1, y1, x2, y2 = line[0] # msp.add_line((x1, y1), (x2, y2)) # 保存 DWG 文件 # doc.saveas(dwg_file_path) cv2.namedWindow('Detected ', cv2.WINDOW_NORMAL) cv2.imshow('Detected ', image) my_count = 0 # 绘制直线 for line in lines: x1, y1, x2, y2 = line[0] cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2) print(x1,y1) my_count += 1 # msp.add_line((x1, y1), (x2, y2)) # 显示结果 print(my_count) cv2.namedWindow('Detected Lines', cv2.WINDOW_NORMAL) cv2.imshow('Detected Lines', image) # doc.saveas(dwg_file_path) cv2.waitKey(0) cv2.destroyAllWindows() # 调用函数 my_image_path = "F:/python/pythonProject1/A3.jpg" # my_dwg_file_path = "F:/python/pythonProject1/A3.dwg" detect_and_draw_lines(my_image_path)
图纸中识别直线并保持成Dwg格式
最新推荐文章于 2025-05-05 22:30:46 发布