色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>警報和強迫自己起床的開源設備

警報和強迫自己起床的開源設備

2022-11-17 | zip | 0.02 MB | 次下載 | 免費

資料介紹

描述

理念的起源

在過去的幾年里,我很難在早上醒來。我嘗試了許多解決方案,例如警報和強迫自己起床并開始行動,但都沒有奏效。我決定想出一個解決方案來解決所有問題,如果我在鬧鐘響起 5 分鐘后沒有起床,這個設備會在我頭上放一個枕頭。

電子產品

我使用的最終電子設備非常簡單。它由一個 Raspberry Pi 3 B、一個 Raspberry Pi 相機、3 條公對母跳線、一個微型伺服器和一個電池組組成。

?
?
poYBAGN1IfeAe8EmAA-Llqxv-mg565.jpg
?
1 / 4
?

我將伺服引腳連接到樹莓派上的引腳 4、6 和 11。我還將相機插入 Raspberry Pi 上的帶狀電纜的小插槽。

代碼

在詳細介紹我的項目的代碼和面部識別部分之前,我想在 Youtube 上向cytrontech 大喊大叫,因為它發布了這個視頻,展示了如何使用 Opencv 進行基本的面部識別。

在我開始使用我的 Raspberry Pi 之前,我確保安裝了最新版本的 Raspberry Pi OS 的新映像。然后我開始下載opencv以便開始處理圖像。一旦我確認我已經下載了 opencv 并且完全是最新的,我就開始瀏覽 cytrontech 視頻。

代碼部分由四個文件組成,其中兩個與原始視頻中的相同。

import cv2
name = 'Suad' #replace with your name
cam = cv2.VideoCapture(0)
cv2.namedWindow("press space to take a photo", cv2.WINDOW_NORMAL)
cv2.resizeWindow("press space to take a photo", 500, 300)
img_counter = 0
while True:
ret, frame = cam.read()
if not ret:
print("failed to grab frame")
break
cv2.imshow("press space to take a photo", frame)
k = cv2.waitKey(1)
if k%256 == 27:
# ESC pressed
print("Escape hit, closing…")
break
elif k%256 == 32:
# SPACE pressed
img_name = "dataset/"+ name +"/image_{}.jpg".format(img_counter)
cv2.imwrite(img_name, frame)
print("{} written!".format(img_name))
img_counter += 1
cam.release()
cv2.destroyAllWindows()

這是第一個名為 face_shot.py 的文件。它用于拍攝您的臉部照片并收集數據以訓練模型。

#! /usr/bin/python
# import the necessary packages
from imutils import paths
import face_recognition
#import argparse
import pickle
import cv2
import os
# our images are located in the dataset folder
print("[INFO] start processing faces…")
imagePaths = list(paths.list_images("dataset"))
# initialize the list of known encodings and known names
knownEncodings = []
knownNames = []
# loop over the image paths
for (i, imagePath) in enumerate(imagePaths):
# extract the person name from the image path
print("[INFO] processing image {}/{}".format(i + 1,
len(imagePaths)))
name = imagePath.split(os.path.sep)[–2]
# load the input image and convert it from RGB (OpenCV ordering)
# to dlib ordering (RGB)
image = cv2.imread(imagePath)
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# detect the (x, y)-coordinates of the bounding boxes
# corresponding to each face in the input image
boxes = face_recognition.face_locations(rgb,
model="hog")
# compute the facial embedding for the face
encodings = face_recognition.face_encodings(rgb, boxes)
# loop over the encodings
for encoding in encodings:
# add each encoding + name to our set of known names and
# encodings
knownEncodings.append(encoding)
knownNames.append(name)
# dump the facial encodings + names to disk
print("[INFO] serializing encodings…")
data = {"encodings": knownEncodings, "names": knownNames}
f = open("encodings.pickle", "wb")
f.write(pickle.dumps(data))
f.close()

這是名為 train_model.py 的第二個文件。它用于根據您使用 face_shot.py 拍攝的圖像來訓練模型。

#! /usr/bin/python

# import the necessary packages
from datetime import datetime
import servo_move
from imutils.video import VideoStream
from imutils.video import FPS
import face_recognition
import imutils
import pickle
import time
import cv2

now = datetime.now()
da_time = datetime(2021, 4, 7, 12, 35, 00)
x = 0
#Initialize 'currentname' to trigger only when a new person is identified.
currentname = "unknown"
#Determine faces from encodings.pickle file model created from train_model.py
encodingsP = "encodings.pickle"
#use this xml file
#https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
cascade = "haarcascade_frontalface_default.xml"

# load the known faces and embeddings along with OpenCV's Haar
# cascade for face detection
print("[INFO] loading encodings + face detector…")
data = pickle.loads(open(encodingsP, "rb").read())
detector = cv2.CascadeClassifier(cascade)

# initialize the video stream and allow the camera sensor to warm up
print("[INFO] starting video stream…")
vs = VideoStream(src=0).start()
#vs = VideoStream(usePiCamera=True).start()
time.sleep(2.0)

# start the FPS counter
fps = FPS().start()

# loop over frames from the video file stream
while True:
	# grab the frame from the threaded video stream and resize it
	# to 500px (to speedup processing)
	frame = vs.read()
	frame = imutils.resize(frame, width=500)
	
	# convert the input frame from (1) BGR to grayscale (for face
	# detection) and (2) from BGR to RGB (for face recognition)
	gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
	rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

	# detect faces in the grayscale frame
	rects = detector.detectMultiScale(gray, scaleFactor=1.1, 
		minNeighbors=5, minSize=(30, 30),
		flags=cv2.CASCADE_SCALE_IMAGE)

	# OpenCV returns bounding box coordinates in (x, y, w, h) order
	# but we need them in (top, right, bottom, left) order, so we
	# need to do a bit of reordering
	boxes = [(y, x + w, y + h, x) for (x, y, w, h) in rects]

	# compute the facial embeddings for each face bounding box
	encodings = face_recognition.face_encodings(rgb, boxes)
	names = []

	# loop over the facial embeddings
	for encoding in encodings:
		# attempt to match each face in the input image to our known
		# encodings
		matches = face_recognition.compare_faces(data["encodings"],
			encoding)
		name = "Unknown" #if face is not recognized, then print Unknown

		# check to see if we have found a match
		if True in matches:
			# find the indexes of all matched faces then initialize a
			# dictionary to count the total number of times each face
			# was matched
			matchedIdxs = [i for (i, b) in enumerate(matches) if b]
			counts = {}

			# loop over the matched indexes and maintain a count for
			# each recognized face face
			for i in matchedIdxs:
				name = data["names"][i]
				counts[name] = counts.get(name, 0) + 1

			# determine the recognized face with the largest number
			# of votes (note: in the event of an unlikely tie Python
			# will select first entry in the dictionary)
			name = max(counts, key=counts.get)
			
			#If someone in your dataset is identified, print their name on the screen
			if currentname != name:
				currentname = name
				print(currentname)
		
		# update the list of names
		names.append(name)


	# loop over the recognized faces
	for ((top, right, bottom, left), name) in zip(boxes, names):
		# draw the predicted face name on the image – color is in BGR
		cv2.rectangle(frame, (left, top), (right, bottom),
			(0, 255, 0), 2)
		y = top - 15 if top - 15 > 15 else top + 15
		cv2.putText(frame, name, (left, y), cv2.FONT_HERSHEY_SIMPLEX,
			.8, (255, 0, 0), 2)


	# display the image to our screen
	cv2.imshow("Facial Recognition is Running", frame)
	key = cv2.waitKey(1) & 0xFF

	# quit when 'q' key is pressed
	if key == ord("q"):
		break

	# update the FPS counter
	fps.update()

	current_time = datetime.now()
	if (currentname == "will") and (current_time.time() > da_time.time()) and (x == 0):
		exec(open("servo_move.py").read())
		x = 1

# stop the timer and display FPS information
fps.stop()
print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))

# do a bit of cleanup
cv2.destroyAllWindows()
vs.stop()

這是視頻中名為 face_rec.py 的第三個也是最后一個文件。它是您想要實際啟動面部識別軟件時運行的文件。我只添加了幾行代碼,它們是:

from datetime import datetime
import servo_move

now = datetime.now()
da_time = datetime(2021, 4, 7, 12, 35, 00)
x = 0

	current_time = datetime.now()
	if (currentname == "will") and (current_time.time() > da_time.time()) and (x =              = 0):
		exec(open("servo_move.py").read())
		x = 1

這些代碼行檢查當前時間是否為上午 7:35,即鬧鐘響后 5 分鐘。如果是并且我的臉在那里,那么它會執行一個名為servo_move.py 的文件。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11,GPIO.OUT)
servo1 = GPIO.PWM(11,50)
servo1.start(0)
servo1.ChangeDutyCycle(12)
time.sleep(2)
servo1.ChangeDutyCycle(2)
time.sleep(0.5)
servo1.ChangeDutyCycle(0)
servo1.stop()
GPIO.cleanup()

這是servo_move.py。它使伺服器移動 180 度然后向后移動。

制造

我必須制作的第一件作品是在我的電子部分展示的“電子板”。它只是一塊木頭,一切都依賴于它。

這是一個非常簡單的設計,只是一些木頭與我 3D 打印的一些鉸鏈相連。我想說鉸鏈不是我自己設計的,它們是guppyk在 thingiverse 上制作的。我使用的鉸鏈和它們的許多變體可以在這里下載

我會做什么不同

這個項目最終確實按預期工作,但這并不意味著我不會改變某些方面。如果我再做一次,我會把木頭噴漆成黑色,這樣膠帶和零件就不會那么突出了。我也會制作一個更永久的電子板版本。


評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: ebc5恐怖5a26房间| 国产3级在线观看| 欧美日韩亚洲中字二区| JAPANBABES11学生老师| 农民下乡在线观看3| 国产高清视频免费在线观看| 无限资源在线完整高清观看1 | 久久性综合亚洲精品电影网| 最近中文字幕完整版免费高清 | 国产剧情在线精品视频不卡| 性生大片免费看| 美女岔开腿露出粉嫩花苞| xxx免费观看| 亚洲欧美一区二区三区导航| 麻花传媒XK在线观看| 疯狂第一次国语| 征服丝袜旗袍人妻| 色噜噜视频影院| 久久一本岛在免费线观看2020| 99re精品视频在线播放视频| 亚洲 日本 天堂 国产 在线| 美女搞鸡网站| 精品国产乱码久久久久久上海公司 | 男人插曲女人身体视频| 国产WW久久久久久久久久| 91国偷自产一区二区三区| 午夜福利在线观看6080| 青青伊人精品| 老司机亚洲精品影院| 国产在线观看黄| 耽肉高h喷汁呻吟| 97影院午夜午夜伦不卡| 亚洲视频黄| 亚洲你我色| 小草观看免费高清视频| 色翁荡息又大又硬又粗又爽电影| 蜜桃臀无码内射一区二区三区| 久久99热成人精品国产| 黑兽在线观看高清在线播放樱花| 国产高清精品自在久久| 国产成人自拍视频在线观看|