Python Otonom aracın siyah kablo hattını takip etmesi için kod yazmak

sevko5885

Femtopat
Katılım
12 Kasım 2024
Mesajlar
4
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar benim bir yarısmada olan bir görev için Python kodu oluşturmam gerekiyor. Görev siyah bir kablo hattı var ve otonom aracımız bu hattı takip edecek fakat kablonun bazı yerlerinde kesıklıkler var ve bu yerlerde üçgen, altıgen, daire gibi şekiller var araç bu hattı takip ederken karşılaştığı engelleri kayıt edecek ve ekrana yazdıracak. Çok uğraştım ama bir yol katedemedim.
Python:
İmport CV2.
İmport numpy as np.

Def detect_shapes(image):
 Gray = CV2.cvtcolor(image, CV2.color_bgr2gray)
 Blurred = CV2.gaussianblur(gray, (5, 5), 0)
 Edges = CV2.canny(blurred, 50, 150)
 Contours, _ = CV2.findcontours(edges, CV2.retr_external, CV2.chaın_approx_sımple)

 For contour in contours:
 İf CV2.contourarea(contour) < 500: # küçük konturları yok say.
 Continue.

 Approx = CV2.approxpolydp(contour, 0.04 * CV2.arclength(contour, true), true)
 X, Y, W, h = CV2.boundingrect(approx)
 Shape_name = "unknown"

 İf len(approx) == 3:
 Shape_name = "triangle"
 Elif len(approx) == 4:
 Shape_name = "square"
 Elif len(approx) == 5:
 Shape_name = "pentagon"
 Elif len(approx) == 6:
 Shape_name = "hexagon"
 Else:
 Shape_name = "circle"

 CV2.puttext(image, shape_name, (X, y - 10), CV2.font_hershey_sımplex, 0.6, (0, 255, 0), 2)
 CV2.drawcontours(image, [approx], -1, (0, 255, 0), 2)

Def main():
 # -- Coding: Utf-8 --

 İmage_path = "C:\\Users\\a.jpg"

 İmage = CV2.imread(image_path)

 İf image is none:
 Print("resim yüklenemedi!")
 Return.

 Detect_shapes(image)

 CV2.imshow("shape detection", image)
 CV2.waitkey(0)
 cv2.destroyAllWindows()

İf name == "main":
 main()

Böyle bir şey yazdım hatası çok ama.
 
Son düzenleyen: Moderatör:
Merhaba arkadaşlar benim bir yarısmada olan bir görev için Python kodu oluşturmam gerekiyor. Görev siyah bir kablo hattı var ve otonom aracımız bu hattı takip edecek fakat kablonun bazı yerlerinde kesıklıkler var ve bu yerlerde üçgen, altıgen, daire gibi şekiller var araç bu hattı takip ederken karşılaştığı engelleri kayıt edecek ve ekrana yazdıracak. Çok uğraştım ama bir yol katedemedim.
Python:
İmport CV2.
İmport numpy as np.

Def detect_shapes(image):
 Gray = CV2.cvtcolor(image, CV2.color_bgr2gray)
 Blurred = CV2.gaussianblur(gray, (5, 5), 0)
 Edges = CV2.canny(blurred, 50, 150)
 Contours, _ = CV2.findcontours(edges, CV2.retr_external, CV2.chaın_approx_sımple)

 For contour in contours:
 İf CV2.contourarea(contour) < 500: # küçük konturları yok say.
 Continue.

 Approx = CV2.approxpolydp(contour, 0.04 * CV2.arclength(contour, true), true)
 X, Y, W, h = CV2.boundingrect(approx)
 Shape_name = "unknown"

 İf len(approx) == 3:
 Shape_name = "triangle"
 Elif len(approx) == 4:
 Shape_name = "square"
 Elif len(approx) == 5:
 Shape_name = "pentagon"
 Elif len(approx) == 6:
 Shape_name = "hexagon"
 Else:
 Shape_name = "circle"

 CV2.puttext(image, shape_name, (X, y - 10), CV2.font_hershey_sımplex, 0.6, (0, 255, 0), 2)
 CV2.drawcontours(image, [approx], -1, (0, 255, 0), 2)

Def main():
 # -- Coding: Utf-8 --

 İmage_path = "C:\\Users\\a.jpg"

 İmage = CV2.imread(image_path)

 İf image is none:
 Print("resim yüklenemedi!")
 Return.

 Detect_shapes(image)

 CV2.imshow("shape detection", image)
 CV2.waitkey(0)
 cv2.destroyAllWindows()

İf name == "main":
 main()

Böyle bir şey yazdım hatası çok ama.
Hatalar genellikle büyük küçük harflerden kaynaklanıyor. örneğin
Kod:
import
yerine
Kod:
İmport
yazman.

Doğru kodu aşağıya koydum.
Kod:
import cv2
import numpy as np


def detect_shapes(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    edges = cv2.Canny(blurred, 50, 150)
    contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)


    for contour in contours:
        if cv2.contourArea(contour) < 500:  # küçük konturları yok say.
            continue


        approx = cv2.approxPolyDP(contour, 0.04 * cv2.arcLength(contour, True), True)
        x, y, w, h = cv2.boundingRect(approx)
        shape_name = "unknown"


        if len(approx) == 3:
            shape_name = "triangle"
        elif len(approx) == 4:
            shape_name = "square"
        elif len(approx) == 5:
            shape_name = "pentagon"
        elif len(approx) == 6:
            shape_name = "hexagon"
        else:
            shape_name = "circle"


        cv2.putText(image, shape_name, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
        cv2.drawContours(image, [approx], -1, (0, 255, 0), 2)


def main():
    # -- Coding: utf-8 --


    image_path = "C:\\Users\\a.jpg"


    image = cv2.imread(image_path)


    if image is None:
        print("Resim yüklenemedi!")
        return


    detect_shapes(image)


    cv2.imshow("Shape Detection", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()
 

Technopat Haberler

Yeni konular

Geri
Yukarı