Program Pendeteksi Uang Menggunakan Color Detection

 Program Pendeteksi Uang Menggunakan Color Detection

    Berikut adalah kode python untuk mendeteksi uang berdasarkan warna, dengan fitur tambahan yaitu membuka dan menutup gerbang menggunakan servo dan arduino dengan komunikasi serial pada COM13 dan Pin PWM Sevo 9.


import numpy as np 
import cv2 
from pyfirmata import Arduino, util
import time

# Inisialisasi komunikasi dengan Arduino pada COM10
board = Arduino('COM13')
servo_pin = board.get_pin('d:9:s')  # Servo terhubung ke pin digital 9 (PWM)

# Fungsi untuk memutar servo ke sudut yang diinginkan
def rotate_servo(angle):
    servo_pin.write(angle)

# Setel posisi awal servo ke 0 derajat
rotate_servo(0)

# Mengambil video melalui webcam dengan resolusi lebih rendah untuk pemrosesan yang lebih cepat
ip_camera_url = (1)  # Ganti dengan URL IP camera
webcam = cv2.VideoCapture(ip_camera_url)
webcam.set(cv2.CAP_PROP_FRAME_WIDTH, 530)  # Lebar video
webcam.set(cv2.CAP_PROP_FRAME_HEIGHT, 320)  # Tinggi video

# Variabel untuk perhitungan FPS
prev_time = 0
fps = 0

# Mulai loop utama 
while True: 
	
	# Membaca video dari webcam dalam frame gambar
	_, imageFrame = webcam.read() 

	# Mengonversi frame gambar dari BGR (ruang warna RGB) ke HSV (hue-saturation-value)
	hsvFrame = cv2.cvtColor(imageFrame, cv2.COLOR_BGR2HSV) 

	# Menetapkan rentang warna biru dan mendefinisikan mask
	blue_lower = np.array([94, 80, 2], np.uint8) 
	blue_upper = np.array([120, 255, 255], np.uint8) 
	blue_mask = cv2.inRange(hsvFrame, blue_lower, blue_upper) 
	
	# Menetapkan rentang warna pink dan mendefinisikan mask
	pink_lower = np.array([140, 50, 50], np.uint8)
	pink_upper = np.array([170, 255, 255], np.uint8)
	pink_mask = cv2.inRange(hsvFrame, pink_lower, pink_upper) 

	# Transformasi morfologis, dilasi untuk setiap warna
	kernel = np.ones((3, 3), "uint8")  # Ukuran kernel dikurangi untuk efisiensi
	
	# Untuk warna biru
	blue_mask = cv2.dilate(blue_mask, kernel) 
	res_blue = cv2.bitwise_and(imageFrame, imageFrame, mask = blue_mask) 
	



# Untuk warna pink
	pink_mask = cv2.dilate(pink_mask, kernel) 
	res_pink = cv2.bitwise_and(imageFrame, imageFrame, mask = pink_mask) 
	
	# Membuat kontur untuk melacak warna biru
	contours, _ = cv2.findContours(blue_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
	blue_detected = False
	for contour in contours: 
		area = cv2.contourArea(contour) 
		if area > 300:  # Jika area kontur lebih besar dari 300, deteksi warna biru
			x, y, w, h = cv2.boundingRect(contour) 
			imageFrame = cv2.rectangle(imageFrame, (x, y), (x + w, y + h), (255, 0, 0), 2) 
			cv2.putText(imageFrame, "Palsu inimahh, Dilarang Masuk!", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 4) 
			blue_detected = True

	# Membuat kontur untuk melacak warna pink
	contours, _ = cv2.findContours(pink_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
	pink_detected = False
	for contour in contours: 
		area = cv2.contourArea(contour) 
		if area > 300:  # Jika area kontur lebih besar dari 300, deteksi warna pink
			x, y, w, h = cv2.boundingRect(contour) 
			imageFrame = cv2.rectangle(imageFrame, (x, y), (x + w, y + h), (255, 255, 255), 2) 
			cv2.putText(imageFrame, "Nahh ini baru uang", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 4) 
			pink_detected = True
	
	# Memutar servo berdasarkan deteksi warna
	if pink_detected:
		rotate_servo(0)  # Putar servo ke 90 derajat jika warna pink terdeteksi
	if blue_detected:
		rotate_servo(90)  # Putar servo ke 0 derajat jika warna biru terdeteksi

	# Perhitungan FPS
	curr_time = time.time()
	fps = 1 / (curr_time - prev_time)
	prev_time = curr_time

	# Menampilkan FPS di sudut kiri atas
	cv2.putText(imageFrame, f"FPS: {int(fps)}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

	# Tampilkan hasil deteksi warna dan kontrol servo
	cv2.imshow("Pendeteksi Duid", imageFrame) 
	
	# Menghentikan program jika tombol 'q' ditekan
	if cv2.waitKey(10) & 0xFF == ord('q'): 
		webcam.release() 
		cv2.destroyAllWindows() 
		board.exit()  # Tutup koneksi ke Arduino
		break

0 Response to "Program Pendeteksi Uang Menggunakan Color Detection"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel