图纸中识别直线并保持成Dwg格式

    在工程设计中,在全球化工业合作中,大家将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)
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值