top of page
DALL·E 2025-01-22 23.11.10 - A vertical, futuristic design for a website background that c

Python ile Görüntü İşleme ve AutoCAD Entegrasyonu: Çizgileri Algılayıp DWG Dosyasına Aktarma

Günümüzde, görsel verilerin işlenmesi ve dijital çizimlere dönüştürülmesi önemli bir alan haline gelmiştir. Python, güçlü kütüphaneleri sayesinde bu süreçte oldukça kullanışlı bir araçtır. Özellikle OpenCV (cv2) ile görüntü işleme ve AutoCAD ile çizim oluşturma, birçok endüstri ve mühendislik alanında yaygın olarak kullanılmaktadır. Python, bu iki güçlü aracı birleştirerek görsel verileri tespit etmek, analiz etmek ve AutoCAD'e aktarmak için mükemmel bir platform sunar. Bu projede, görüntüden çizgileri tespit edip, bu verileri AutoCAD ortamına aktararak çizim oluşturmayı amaçladım.

AutoCAD ve Python entegrasyonu ile ilgili diğer projelerime, aşağıdaki GitHub linkinden ulaşabilirsiniz.


Bu kod, bir görüntüyü okuyarak kenar algılama ve doğrusal çizgi tespiti yapar. Ardından tespit edilen çizgiler AutoCAD'e aktarılır ve bir DWG dosyası olarak kaydedilir. Kodun temel adımları şunlardır:

  1. Görüntü Okuma ve Kontrol: Görüntünün doğru yüklenip yüklenmediği kontrol edilir.

  2. Gri Tonlama: Görüntü, kenar algılama işlemi için gri tonlamalı formata dönüştürülür.

  3. Kenar Algılama: Canny algoritması kullanılarak görüntüdeki kenarlar tespit edilir.

  4. Doğru Algılama: Hough Transform algoritması ile kenarlar boyunca çizgiler algılanır.

  5. AutoCAD'e Aktarma: Tespit edilen çizgiler ölçeklendirilerek AutoCAD ortamına çizilir ve DWG dosyası oluşturulur.



1. Gerekli Kütüphanelerin Yüklenmesi

Projemizin çalışabilmesi için gerekli kütüphaneleri terminal ekranından aşağıdaki komutlarla yükleyebilirsiniz:

pip install opencv-python # OpenCV 
pip install numpy # NumPy 
pip install pyautocad # PyAutoCAD 
pip install matplotlib # Matplotlib

Öncelikle, gerekli kütüphaneleri içeri aktararak başlıyoruz. Bu kütüphaneler görüntü işleme ve AutoCAD entegrasyonu için kullanılır.

# Gerekli kütüphaneleri import ediyoruz
import cv2
import numpy as np
import matplotlib.pyplot as plt
from pyautocad import Autocad, APoint
  • cv2: OpenCV kütüphanesi, görüntü işleme için kullanılır.

  • numpy: Sayısal işlemler için kullanılır.

  • matplotlib.pyplot: Görüntüleri göstermek için kullanılır.

  • pyautocad: AutoCAD ile etkileşim kurmak için kullanılır.


2. Görüntüyü Okuma ve Kontrol Etme

İşlenecek görüntüde kullandığım fotoğraf aşağıda yer almaktadır:

1. kullanılan fotoğraf
1. kullanılan fotoğraf

Görüntü dosyasını yükleyip, doğru şekilde yüklenip yüklenmediğini kontrol ediyoruz.

# İşlenecek görüntünün yolunu belirtiyoruz
image_path = 'image2.png'

# Görüntünün doğru bir şekilde yüklenip yüklenmediğini kontrol ediyoruz
img = cv2.imread(image_path)

if img is None:
    # Görüntü yüklenemezse hata mesajı yazdırıyoruz
    print(f"Error: The image at {image_path} could not be loaded.")
else:
    # Görüntü başarıyla yüklendiğinde, boyut bilgilerini ekrana yazdırıyoruz
    print(f"Image loaded successfully. Shape: {img.shape}")

  • cv2.imread(): Belirtilen yoldan görüntüyü yükler.

  • Eğer yüklenemezse, hata mesajı gösterilir; aksi takdirde, görüntü başarıyla yüklenmişse boyut bilgisi yazdırılır.


3. Görüntüyü Gri Tonlamaya Dönüştürme

Görüntüyü, kenar algılama işlemine uygun hale getirmek için gri tonlamaya dönüştürüyoruz.

# Görüntüyü gri tonlamalı formata dönüştürüyoruz
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  • cv2.cvtColor(): Görüntüyü renkli (BGR) formatından gri tonlamaya dönüştürür.


4. Kenar Algılama

Canny kenar algılama algoritmasını kullanarak, görüntüdeki kenarları tespit ediyoruz.

# Kenar algılama işlemi için Canny algoritmasını kullanıyoruz
edges = cv2.Canny(gray, 30, 200, apertureSize=7)
  • cv2.Canny(): Canny algoritması ile kenarları tespit eder. Burada 30 ve 200, düşük ve yüksek eşik değerleridir, bu değerleri değiştirerek hassasiyeti ayarlayabilirsiniz.


5. Hough Transform ile Doğru Algılama

Hough Transform algoritması ile kenarlar üzerinde doğruları tespit ediyoruz.

# Kenarların üzerinden geçen doğruları Hough Transform ile tespit ediyoruz
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold=50, minLineLength=2, maxLineGap=50)
  • cv2.HoughLinesP(): Hough doğrusal dönüşüm algoritması ile kenarların üzerinde doğruları algılar. threshold parametresi doğruların algılanması için minimum sayıdaki pikseli belirtir.


6. Algılanan Doğruların Görselleştirilmesi

Tespit edilen kenarları ve doğruları görselleştiriyoruz. İlk olarak, kenarları bir pencere içerisinde gösteriyoruz.

# Kenarları gösteren görüntüyü ekranda açıyoruz
cv2.imshow("Detected Edges", edges)
cv2.waitKey(0)  # Kullanıcı bir tuşa basana kadar bekler
cv2.destroyAllWindows()
  • cv2.imshow(): Görüntüyü bir pencerede gösterir.

  • cv2.waitKey(): Kullanıcının bir tuşa basmasını bekler.

  • cv2.destroyAllWindows(): Görüntü penceresini kapatır.

    2. Tespit Edilen Kenarlar
    2. Tespit Edilen Kenarlar

Daha sonra, tespit edilen doğruları orijinal görüntü üzerine çiziyoruz.

# Algılanan doğruları orijinal görüntü üzerine çiziyoruz (görselleştirme için)
for line in lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
  • cv2.line(): Algılanan doğruları orijinal görüntü üzerine çizer.

Son olarak, doğruları çizdiğimiz görüntüyü gösteriyoruz.

# Doğruları çizilmiş görüntüyü ekranda açıyoruz
cv2.imshow("Detected Lines", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. Tespit Edilen Çizgiler
3. Tespit Edilen Çizgiler

7. AutoCAD Entegrasyonu ve DWG Dosyasına Kaydetme

Tespit edilen çizgileri AutoCAD'e aktararak bir DWG dosyası oluşturuyoruz.

Öncelikle, AutoCAD için bir oturum başlatıyoruz:

# AutoCAD oturumu başlatıyoruz
acad = Autocad(create_if_not_exists=True)
acad.app.Documents.Add()  # Yeni bir AutoCAD dokümanı oluşturuyoruz
  • Autocad(): AutoCAD ile etkileşime geçmek için bir nesne oluşturur.

  • acad.app.Documents.Add(): Yeni bir AutoCAD dokümanı oluşturur.

Tespit edilen doğruları AutoCAD ortamına çiziyoruz:

# Algılanan doğruları AutoCAD ortamına çiziyoruz
for line in lines:
    x1, y1, x2, y2 = line[0]
    # Piksel koordinatlarını ölçek faktörü ile AutoCAD koordinatlarına dönüştürüyoruz
    start_point = APoint(x1 * scaling_factor, y1 * scaling_factor)
    end_point = APoint(x2 * scaling_factor, y2 * scaling_factor)
    acad.model.AddLine(start_point, end_point)
  • APoint(): AutoCAD koordinatlarına dönüştürülmüş nokta yaratır.

  • acad.model.AddLine(): AutoCAD modeline bir çizgi ekler.

Son olarak, DWG dosyasını kaydediyoruz:

# AutoCAD çizimini DWG dosyası olarak kaydediyoruz
acad.app.ActiveDocument.SaveAs("/Documents/autocad/drawing18.dwg")
print("DWG file saved as 'generated_floor_plan.dwg'")
  • SaveAs(): AutoCAD çizimini belirtilen dosya yolunda DWG formatında kaydeder.

    4. DWG dosyasındaki çizim
    4. DWG dosyasındaki çizim

8. (Opsiyonel) AutoCAD Dokümanını Kapatma

İsterseniz AutoCAD dokümanını kapatabilirsiniz, ancak bu adım opsiyoneldir.

# Opsiyonel: AutoCAD dokümanını kapatma (Açık kalmasını istiyorsanız bu kısmı kaldırabilirsiniz)
# acad.app.ActiveDocument.Close()

Bu açıklamalarla, her bir adımı detaylı bir şekilde ele alarak kodun işleyişini daha iyi anlamanızı sağlamayı hedefledim. Kod, görsel üzerinde kenarları tespit ederek çizgileri algılar, ardından bu çizgileri AutoCAD ortamına aktarır ve son olarak DWG formatında kaydederek dışa aktarılmasını sağlar. Bu süreç, görüntü işleme ve AutoCAD entegrasyonunu başarılı bir şekilde birleştirerek, görsel veriyi dijital çizimlere dönüştürmeyi mümkün kılar.


 
 
 

留言


bottom of page