Tải bản đầy đủ - 0 (trang)
KẾT LUẬN VÀ ĐỀ NGHỊ

KẾT LUẬN VÀ ĐỀ NGHỊ

Tải bản đầy đủ - 0trang

tương lai có thể phát triển mơ hình theo hướng phù hợp hơn và có thể phát huy được

hết những tối ưu của xử lí ảnh.

Do giới hạn của một đề tài tốt nghiệp nên nó chỉ dừng lại ở mơ hình. Ta có thể đưa

vào ứng dụng thực tế khi đưa thiết kế, xử dụng những thiết bị có độ xử lí và độ ổn định

cao hơn,thiết kế các mạch cơng suất để điều khiển các động cơ có cơng suất lớn.Xây

dựng những hệ thống có quy mơ lớn hơn để có thể đáp ứng được năng suất và thay thế

sức lao động con người.



TÀI LIỆU THAM KHẢO

 Tài liệu tiếng Việt



[1]. Đỗ Năng Tồn, Phạm Việt Bình (2008), Giáo trình xử lý ảnh – ĐH Thái Nguyên,

Nxb Khoa học và kỹ thuật, 2008.

[2]. Lương Mạnh Bá, Nguyễn Thanh Thủy (2003), Nhập Môn Xử lý ảnh số, Nxb Khoa

học và Kỹ thuật, 2003.

[3]. Nguyễn Kim Sách (1997), Xử lý ảnh và Video số, Nxb Khoa học và Kỹ thuật,

1997.

 Tài liệu tiếng Anh



[4]. John C.Russ (1995), The Image Procesing Handbook. CRC Press, Inc.

[5]. Adrian Low (1991), Introductory Computer Vision and Image Processing,

Copyright (c) 1991 by McGrow Hill Book Company (UK) Limited.

[6]. Anil K.Jain (1989), Fundamental of Digital Image Processing. Prentice Hall,

Engwood cliffs.



PHỤ LỤC

import RPi.GPIO as GPIO

import numpy as np

import cv2

import time

start=31

stop=35

pwmm=37

kiemtra=0

kiemtra1=0

cb1=11

cb2=12

ctht3=38

ctht4=40

dc1=26

dc2=29

cb3=19

ctht1=21

ctht2=22

dc3=23

dc4=33

GPIO.setmode(GPIO.BOARD)

GPIO.setwarnings(False)

cap = cv2.VideoCapture(0)

dem=0

dem1=0

a=0

b=0

list=[0,0,0,0,0,0,0,0,0,0,0,0]

if cap.isOpened() == False:

print('Unable to open the camera')



else:

print('Start grabbing, press a key on Live window to terminate')

def my_callback(channel):

print('chup anh')

global dem,list

frame1=frame

imgray = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(imgray, 60,255, 0)

im2,contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL,

cv2.CHAIN_APPROX_SIMPLE)

cnt = contours[0]

max1=cv2.contourArea(contours[0])

for i in range(0,len(contours)):

cnt= contours[i]

area = cv2.contourArea(cnt)

if area>max1:

max1=area

j=i

print(max1)

x,y,w,h = cv2.boundingRect(contours[j])

cv2.rectangle(frame1,(x,y),(x+w,y+h),(0,255,0),2)

ten=str(dem)

ten=ten +'.jpg'

cv2.imwrite(ten,frame1)

if(max1>20000):

list[dem]=max1

dem+=1

if dem==10:

dem=0

def my_callback1(channel):

global kiemtra,dem1,list



#print ("falling edge detected on 11")

if list[dem1]>=62000:

list[dem1]=0

dem1+=1;

if dem1==10:

dem1=0

if ((GPIO.input(dc1)==0)&(GPIO.input(dc2)==0)):

if kiemtra==0:

GPIO.output(dc1,1)

GPIO.output(dc2,0)

else:

GPIO.output(dc2,1)

GPIO.output(dc1,0)

def my_callback2(channel):

global kiemtra1,dem1,list

#print ("falling edge detected on 19")

if ((list[dem1]<62000)&(list[dem1]>=50000)):

if ((GPIO.input(dc3)==0)&(GPIO.input(dc4)==0)):

if kiemtra1==0:

GPIO.output(dc3,1)

GPIO.output(dc4,0)

else:

GPIO.output(dc3,0)

GPIO.output(dc4,1)

if(list[dem1]>20000 ):

list[dem1]=0

dem1+=1;

if dem1==10:

dem1=0

GPIO.setup(cb1, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.setup(cb2, GPIO.IN, pull_up_down=GPIO.PUD_UP)



GPIO.setup(ctht1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(ctht2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(dc1, GPIO.OUT)

GPIO.setup(dc2, GPIO.OUT)

GPIO.setup(cb3, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.setup(ctht3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(ctht4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(dc3, GPIO.OUT)

GPIO.setup(dc4, GPIO.OUT)

GPIO.add_event_detect(cb1, GPIO.FALLING, callback=my_callback1,

bouncetime=500)

GPIO.add_event_detect(cb2, GPIO.FALLING, callback=my_callback,

bouncetime=500)

GPIO.add_event_detect(cb3, GPIO.FALLING, callback=my_callback2,

bouncetime=500)

GPIO.setup(start,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(stop,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

GPIO.setup(pwmm,GPIO.OUT)

pwm=GPIO.PWM(pwmm,100)

pwm.start(0)

GPIO.output(dc1,1)

GPIO.output(dc2,0)

GPIO.output(dc3,1)

GPIO.output(dc4,0)

while(1):

ret,frame = cap.read()

imgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(imgray, 60,255, 0)

cv2.imshow('dasa',frame)

cv2.imshow('dwasa',thresh)

if (GPIO.input(stop)==1):



if b==1:

print ('stop')

pwm.ChangeDutyCycle(0)

b=0

if (GPIO.input(start)==1):

if b==0:

print ('start')

b=1

for t in range(0,101):

pwm.ChangeDutyCycle(t)

time.sleep(0.05)

if ((GPIO.input(dc1)==1)&(GPIO.input(ctht1)==1)):

GPIO.output(dc1,0)

kiemtra=1

if ((GPIO.input(dc2)==1)&(GPIO.input(ctht2)==1)):

GPIO.output(dc2,0)

kiemtra=0

if ((GPIO.input(dc3)==1)&(GPIO.input(ctht3)==1)):

GPIO.output(dc3,0)

kiemtra1=1

if ((GPIO.input(dc4)==1)&(GPIO.input(ctht4)==1)):

GPIO.output(dc4,0)

kiemtra1=0

if ret==False:

print('Unable to grab from the camera')

if cv2.waitKey(1) & 0xFF == ord('q'):

cap.release()

out.release()

cv2.destroyAllWindows()

break



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

KẾT LUẬN VÀ ĐỀ NGHỊ

Tải bản đầy đủ ngay(0 tr)

×