废话不多说直接上可用代码。
材料:减速电机和USB摄像头、树莓派4g8b
代码环境:python、opencv
新手要是没要gpio库的话可自行下载,方法太简单这里不多说。
内涵多种滤波处理可自己尝试使用,代码都在里面。
# coding:utf-8
import RPi.GPIO as gpio
import time
import cv2
import numpy as np
import os
import serial
ser=serial.Serial('/dev/ttyAMA0',115200,timeout=1)
# 定义引脚
#pwm双通道电机驱动
#电机1
pin1 = 12
pin2 = 16
#电机2
pin3 = 18
pin4 = 22
#pwm单通道电机驱动
#电机3
Motor_A_PWM = 7
Motor_A_DIR = 11
#电机4
Motor_B_PWM = 32
Motor_B_DIR = 36
# 设置GPIO口为BOARD编号规范
gpio.setmode(gpio.BOARD)
# 设置GPIO口为输出
gpio.setup(pin1, gpio.OUT)
gpio.setup(pin2, gpio.OUT)
gpio.setup(pin3, gpio.OUT)
gpio.setup(pin4, gpio.OUT)
gpio.setup(Motor_A_PWM, gpio.OUT)
gpio.setup(Motor_B_PWM, gpio.OUT)
gpio.setup(Motor_A_DIR, gpio.OUT)
gpio.setup(Motor_B_DIR, gpio.OUT)
# 设置PWM波,频率为500Hz
pwm1 = gpio.PWM(pin1, 500)
pwm2 = gpio.PWM(pin2, 500)
pwm3 = gpio.PWM(pin3, 500)
pwm4 = gpio.PWM(pin4, 500)
pwm5 = gpio.PWM(Motor_A_PWM, 500)
pwm6 = gpio.PWM(Motor_B_PWM, 500)
# pwm波控制初始化
pwm1.start(0)
pwm2.start(0)
pwm3.start(0)
pwm4.start(0)
pwm5.start(0)
pwm6.start(0)
#电机34方向引脚初
gpio.output(Motor_A_DIR, gpio.LOW)
gpio.output(Motor_B_DIR, gpio.LOW)
# center定义
center = 320
def add_salt_pepper_noise(image):
h, w = image.shape[:2]
nums = 10000
rows = np.random.randint(0, h, nums, dtype=np.int)
cols = np.random.randint(0, w, nums, dtype=np.int)
for i in range(nums):
if i % 2 == 1:
image[rows[i], cols[i]] = (255, 255, 255)
else:
image[rows[i], cols[i]] = (0, 0, 0)
return image
def gaussian_noise(image):
noise = np.zeros(image.shape, image.dtype)
m = (15, 15, 15)
s = (30, 30, 30)
cv2.randn(noise, m, s)
dst0 = cv2.add(image, noise)
cv2.namedWindow("gaussian noise",0)
cv2.resizeWindow("gaussian noise",400,400)
cv2.imshow("gaussian noise", dst0)
return dst
# 打开摄像头,图