學習的時候百分之99參考了這篇文章
yzy_1996:【方法】樹莓派小車自動循跡(攝像頭):
具體內容都在裡面了,因為我用的是l298n電機驅動模組,所以是用enab來控制pwm的,所以適當更改一下
因為我是在辦公室地面,不像他一樣有顏色清楚的軌道,所以修改了二值化型別和腐蝕膨脹的順序係數
import rpi.gpio as gpio
import time
import cv2 as cv
import numpy as np
gpio.setmode(gpio.board)
gpio.setwarnings(
false
)int1 =
11int2 =
12int3 =
13int4 =
15ena =
16enb =
18# 設定gpio口為輸出
gpio.setup(int1, gpio.out)
gpio.setup(int2, gpio.out)
gpio.setup(int3, gpio.out)
gpio.setup(int4, gpio.out)
gpio.setup(ena,gpio.out)
gpio.setup(enb,gpio.out)
# 設定pwm波,頻率為500hz
pwma = gpio.pwm(ena,
500)
pwmb = gpio.pwm(enb,
500)
defstop()
: gpio.output(int1,0)
gpio.output(int2,0)
gpio.output(int3,0)
gpio.output(int4,0)
pwma.stop(
) pwmb.stop(
)def
forward()
: gpio.output(int1,1)
gpio.output(int2,0)
gpio.output(int3,1)
gpio.output(int4,0)
# pwm波控制初始化
pwma.start(0)
pwmb.start(0)
# center定義
center =
320# 開啟攝像頭,影象尺寸640*480(長*高),opencv儲存值為480*640(行*列)
cap = cv.videocapture(0)
while
true
: ret, frame = cap.read(
) cv.imshow(
'frame'
,frame)
# 轉化為灰度圖
gray = cv.cvtcolor(frame, cv.color_bgr2gray)
#直方圖均勻化
dst = cv.equalizehist(gray)
# 二值化
ret, dst = cv.threshold(dst,
165,
255,cv.thresh_binary)
# 腐蝕膨脹
dst = cv.erode(dst,
none
, iterations=1)
dst = cv.dilate(dst,
none
, iterations=4)
# 單看第400行的畫素值
color = dst[
400]
# 找到白色的畫素點個數
white_count = np.
sum(color ==
255)
# 找到白色的畫素點索引
white_index = np.where(color ==
255)
# 防止white_count=0的報錯
if white_count ==0:
white_count =
1# 找到白色畫素的中心點位置
center =
(white_index[0]
[white_count -1]
+ white_index[0]
[0])
/2# 計算出center與標準中心點的偏移量
direction = center -
320print
(direction)
# 停止
ifabs
(direction)
>
250:
stop(
)# 右轉
elif direction >=0:
# 限制在70以內
if direction >70:
direction =
70 forward(
) pwma.changedutycycle(
30+ direction)
pwmb.changedutycycle(30)
# 左轉
elif direction <0:
if direction <-70
: direction =-70
forward(
) pwma.changedutycycle(30)
pwmb.changedutycycle(
30- direction)
if cv.waitkey(1)
&0xff
==ord
('q'):
break
# 釋放清理
stop(
)cap.release(
)cv.destroyallwindows(
)gpio.cleanup(
)
缺點:在拐彎處,因攝像頭擺放位置,準確度差 微控制器尋跡小車 尋跡模組
一 沒有檢測到黑線,則 h4發光到白紙光反射到h4接收端,h4接收端導通,導通則t1接地 0 提問會不會等於0,哪位有測試 二 有檢測到黑線,則 h4發光到黑線光全部被吸收,h4接收端,沒有收到任何訊號,因為h4不導通 截止 則t1 vcc 提問t1會不會等於5v,哪位有測試 原理圖 檢測到白紙有接...
Raspberry Pi樹莓派小車學習 前期
寫於2019 10 18 在弄樹莓派之前不知道樹莓派是什麼,聽了老師說的,說可以做很多事情,聽完也是懵懵懂懂的,只有自己去弄了才會了解一點,第一次去查樹莓派是什麼,能做什麼,就有以下定義 raspberry pi是一台小型計算機,可以完成很多事情。然後還看到很多由樹莓派做的專案,這裡就不一一舉例了。...
使用樹莓派製作智慧型小車
小車的控制最主要有兩方面的控制,乙個是小車的前後左右的運動控制,乙個是攝像頭的拍攝 上下左右轉運的控制。複製 coding utf 8 import rpi.gpio as gpio import time 小車電機引腳定義 leftin1 20 leftin2 21 leftspeed 16 ri...