快速排序 python
# 快排
def quickSort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quickSort(left) + middle + quickSort(right)
人脸检测 python
# 人脸检测
import cv2
def check_isMan(_file_name):
cascPath = "lbpcascade_frontalface.xml"
faceCascade = cv2.CascadeClassifier(cascPath)
img = cv2.imread(_file_name)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #将图像转化为灰色图
faces = faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30, 30),flags=cv2.CASCADE_SCALE_IMAGE) #检测是否图像是否为人脸,并返回值赋值给faces
if face != None:
return True
else:
return False
采集ADC0832的示例 python
# 采集ADC0832的示例
import wiringpi as gpio
def GetADC0832_Value(ADC_CS=0,ADC_SDA=2,ADC_SCL=1):#默认为wiringpi的0 2 1脚 采集ADC_0832 CH0通道的数据
dat1=0
dat2=0
gpio.digitalWrite(ADC_SCL,0)
gpio.digitalWrite(ADC_SDA,1)
gpio.digitalWrite(ADC_CS, 0) #开始
gpio.digitalWrite(ADC_SCL,1) #第一个上升沿
gpio.digitalWrite(ADC_SCL,0)
gpio.digitalWrite(ADC_SDA,1) #第二个上升沿
gpio.digitalWrite(ADC_SCL,1)
gpio.digitalWrite(ADC_SCL,0)
gpio.digitalWrite(ADC_SDA,0) #这里若写ADC_SDA为1,则选用通道1进行AD转换
gpio.digitalWrite(ADC_SCL,1) #第三个上升沿
gpio.digitalWrite(ADC_SCL,0) #第三个下降沿
gpio.digitalWrite(ADC_SDA,1)
for i in range(0,8):
gpio.digitalWrite(ADC_SCL,1)
gpio.digitalWrite(ADC_SCL,0) #开始从第四个下降沿接收数据
gpio.pinMode(ADC_SDA, gpio.INPUT)
dat1=dat1<<1 | gpio.digitalRead(ADC_SDA)
for i in range(0,8): #接收校验数据
dat2 = dat2 | (gpio.digitalRead(ADC_SDA)<<i)
gpio.digitalWrite(ADC_SCL,1)
gpio.digitalWrite(ADC_SCL,0)
gpio.digitalWrite(ADC_CS,1)
if(dat1==dat2): #与校验数据比较,正确就返回数据,否则返回0
return dat1
return 0
DHT114传感器的采集 python
# DHT114传感器的采集
import RPi.GPIO as GPIO
def Get_DHT114(channel=16): #获取DHT114传感器数值,默认使用端口16,按物理位置为16的口 (非wiringpi的)
data = [] #赋值data为空
j = 0 #赋值j为0
GPIO.setmode(GPIO.BOARD) #告诉程序按物理位置找GPIO头
time.sleep(1) #延时一秒
GPIO.setup(channel, GPIO.OUT) #设置channel口为输出
GPIO.output(channel, GPIO.LOW) #设置channel口为低电平
time.sleep(0.02) #延时0.02秒
GPIO.output(channel, GPIO.HIGH) #设置channel口为高电平
GPIO.setup(channel, GPIO.IN) #设置channel口为输入
while GPIO.input(channel) == GPIO.LOW: #获取将标号为channel的针的电平是否为低电平
continue #如果条件成立则则继续
while GPIO.input(channel) == GPIO.HIGH: #获取将标号为channel的针的电平是否为高电平
continue #如果条件成立则则继续
while j < 40:
k = 0 #赋值k为0
while GPIO.input(channel) == GPIO.LOW: #获取将标号为channel的针的电平是否为低电平
continue #如果条件成立则则继续
while GPIO.input(channel) == GPIO.HIGH: #获取将标号为channel的针的电平是否为高电平
k += 1 #如果条件成立则 k+1
if k > 100: #如果k大于100
break #如果条件成立则跳出
if k < 8: #如果k小于8
data.append(0) #如果条件成立则data数组加0
else:
data.append(1) #如果条件不成立则data数组加1
j += 1 # j+1
print ("sensor is working.")
print (data) #输出data数据
humidity_bit = data[0:8] #将data数组的0-8位赋值给改变量
humidity_point_bit = data[8:16] #将data数组的8-16位赋值给改变量
temperature_bit = data[16:24] #将data数组的16-24位赋值给改变量
temperature_point_bit = data[24:32] #将data数组的24-32位赋值给改变量
check_bit = data[32:40] #将data数组的32-40位赋值给改变量
##############################全部赋值为0
humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0
##############################
for i in range(8): #根据公式循环8次 来计算每一位的值
humidity += humidity_bit[i] * 2 ** (7-i)
humidity_point += humidity_point_bit[i] * 2 ** (7-i)
temperature += temperature_bit[i] * 2 ** (7-i)
temperature_point += temperature_point_bit[i] * 2 ** (7-i)
check += check_bit[i] * 2 ** (7-i)
tmp = humidity + humidity_point + temperature + temperature_point
if check == tmp: #比较数据 如果正确则输出
print ("temperature :", temperature, "*C, humidity :", humidity, "%")
mytemp = '%f' %temperature
myhumi = '%f' %humidity
mycheck = '%d' %check
mytmp = '%d' %tmp
tmp_output = open(family_path+r'/tmp_data.txt', 'w') #创建一个 file 对象
hud_output = open(family_path+r'/hum_data.txt', 'w') #创建一个 file 对象
checks = open(family_path+r'/check.txt', 'w') #创建一个 file 对象
tmps = open(family_path+r'/tmp.txt', 'w') #创建一个 file 对象
tmp_output.write(mytemp) #将mytemp的值写入tmp_data.txt文件中 温度
hud_output.write(myhumi) #将myhumi的值写入hum_data.txt文件中 湿度
checks.write(mycheck) #将mycheck的值写入check.txt.txt文件中
tmps.write(mytmp) #将mytmp的值写入tmp.txt文件中
tmp_output.close
hud_output.close
checks.close
tmps.close
GPIO.cleanup()
else:
print ("wrong")
checks = open(family_path+'/check.txt', 'w') #创建一个 file 对象
tmps = open(family_path+'/tmp.txt', 'w') #创建一个 file 对象
checks.write('%d' %check) #将check的值写入check.txt.txt文件中
tmps.write('%d' %tmp) #将tmp的值写入check.txt.txt文件中
checks.close
tmps.close
print ("temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp)
数组排序 python
def sort_(lists):
return list(set(lists))