# Source Code Garis Pentagon:
import cv2
import numpy as np
# Path gambar
image_path = 'images/300px-Pentagon.png'
# Baca gambar
image = cv2.imread(image_path)
# Periksa apakah gambar berhasil dimuat
if image is None:
print(f"Error: Unable to load image from {image_path}")
else:
# Lanjutkan dengan proses deteksi garis
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi / 180, threshold=100)
for line in lines:
rho, theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = a * rho
y0 = b * rho
x1 = int(x0 + 1000 * (-b))
y1 = int(y0 + 1000 * (a))
x2 = int(x0 - 1000 * (-b))
y2 = int(y0 - 1000 * (a))
cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.imshow('Deteksi Garis', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# Hasil:
# Source Code Garis hough-circle:
import cv2import numpy as np# Baca gambarimg = cv2.imread('images/hough-circle.jpg', cv2.IMREAD_COLOR)# Konversi gambar ke citra grayscalegray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Reduksi noise dengan GaussianBlurblur = cv2.GaussianBlur(gray, (5, 5), 0)# Deteksi tepi menggunakan Cannyedges = cv2.Canny(blur, 50, 150)# Hough Transform untuk mendeteksi garislines = cv2.HoughLines(edges, 1, np.pi / 180, 100)# Hough Circle Transform untuk mendeteksi lingkarancircles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=50, param1=100, param2=30, minRadius=10, maxRadius=100)# Jika garis ditemukan, gambar garis tersebutif lines is not None:for line in lines:rho, theta = line[0]a = np.cos(theta)b = np.sin(theta)x0 = a * rhoy0 = b * rhox1 = int(x0 + 1000 * (-b))y1 = int(y0 + 1000 * (a))x2 = int(x0 - 1000 * (-b))y2 = int(y0 - 1000 * (a))cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)# Jika lingkaran ditemukan, gambar lingkaran tersebutif circles is not None:circles = np.uint16(np.around(circles))for i in circles[0, :]:cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2)cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 3)# Tampilkan gambar asli dan hasil deteksi garis dan lingkarancv2.imshow('Original Image', img)cv2.imshow('Hough Lines and Circles', edges)cv2.waitKey(0)cv2.destroyAllWindows()
import cv2import numpy as npfrom matplotlib import pyplot as pltdef detect_ellipses(image_path):# Baca gambarimg = cv2.imread(image_path)if img is None:print("Error: Could not read the image.")return# Konversi gambar ke citra grayscalegray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Reduksi noise dengan GaussianBlurblur = cv2.GaussianBlur(gray, (5, 5), 0)# Deteksi tepi menggunakan Cannyedges = cv2.Canny(blur, 50, 150)# Temukan kontur pada gambarcontours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# Iterasi melalui setiap konturfor contour in contours:# Fit ellipse pada setiap konturif len(contour) >= 5:ellipse = cv2.fitEllipse(contour)cv2.ellipse(img, ellipse, (0, 255, 0), 2)# Menampilkan gambar asli dan hasil deteksiplt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title('Original Image with Hough hough-elips')plt.show()plt.imshow(edges, cmap='gray')plt.title('Edge Detection Result')plt.show()# Tunggu input dari pengguna sebelum menutup jendelacv2.waitKey(0)cv2.destroyAllWindows()# Ganti 'path/to/your/image.jpg' dengan jalur file yang benar ke gambar yang ingin Anda gunakanimage_path = 'images/hough-elips.jpg'detect_ellipses(image_path)
0 Komentar