女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

如何制作計算機視覺貓灑水器

454398 ? 來源:wv ? 2019-09-03 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:主要項目必需

Raspberry Pi zero& SD

Raspberry Pi攝像機

繼電器

555計時器。..。(如果您的555計時器未到達,則為arduino和另一個繼電器)

電磁閥

灑水器

電子產品的某種外殼

愿意用6噸大錘打一個隱喻釘子

分辨率很低的相機你幾乎看不到水,但仍然可以看到貓跑來掩護

第2步:系統

1,Pi相機檢測到一個貓大小的物體移動幾個相機幀(下一步驟中已經開始)

2,Pi啟動噴水器

3,Cat跑步封面

4,視頻自動上傳到youtube以便查看樂趣

第3步:編碼時間

使用openCV使用幀減法,您可以找到隨時間變化的幀的區域,使用一些漂亮的函數,您可以確定這些變化有多大以及它們是否會持續存在,最重要的是找出它們是否是貓大小。

有相當的af關于幀減法的新教程,如果你進行快速谷歌搜索,會詳細介紹。

代碼工作原理概述

1,相機不斷拍攝幀并將它們與最后

2,如果檢測到貓大小的形狀,則注意到

3,如果貓大小的變化持續超過4幀,則pi使用其GPIO為繼電器供電以啟動arduino

4,arduino發送信號給第二個繼電器供電5秒鐘,激活電磁閥

5,電磁閥通電時允許水進入噴水器

6,當噴水器處于活動狀態時,攝像頭停止檢測并記錄視頻

7,視頻上傳到Youtube

8,靜止圖像上傳到保管箱以進行微調系統

注意 - 為什么我最終使用2個繼電器和一個arduino打開電磁閥5秒鐘。..。..。

1,pi錄制視頻時pi不能啟動和停止電磁閥scrips暫停直到視頻結束,因此需要arduino(或555計時器)允許當視頻仍在錄制時,電磁鐵打開和關閉獨立于腳本。

2,第一個繼電器和arduino可以用555定時器替換,但是沒有及時發布這個項目,555將節省大量的時間和金錢和步驟。

3,pi不能直接觸發螺線管,因為Pi GPIO工作在3.3v和51mA最大值,螺線管需要5V和更多觸發時不超過51mA。

4,可以裁剪每個幀以去除不需要的區域中的運動檢測,例如neigbors garden。如果不這樣做會導致鄰居給你的花園帶來困惑的看法,因為每次他想進入他的棚子時灑水器就會熄火。

5,我可能錯過了一些明顯的東西,浪費了我的時間來設置它像這樣。

以下代碼

import cv2

import numpy as np

import argparse #cat

import time

import RPi.GPIO as GPIO

import os

import dropbox

from picamera.array import PiRGBArray

from picamera import PiCamera

#------------------------------------------------Upload to youtube---------------------------------------

def HDtoYoutube():

ctime = time.strftime(“_%H-%M-%S”)

cdate = time.strftime(“_%d-%m-%Y”)

vidname = ctime + cdate

#Trigger relay

GPIO.output(11,True)

time.sleep(.5)

GPIO.output(11,False)

print(“Taking Video”)

try:

#Take Video

os.system(‘raspivid -w 1640 -h 922 -o vid{0}.h264 -t 15000’.format(vidname))

#Upload to youtube

print(“Uploading to YouTube”)

os.system(‘sudo youtube-upload --title=“Cat Got Wet {0}” --client-secrets=client_secret.json vid{0}.h264’.format(vidname))

#Remove video file when done

os.remove(‘vid{0}.h264’.format(vidname))

print(“Video uploaded and removed from Pi”)

except:

pass

#------------------------------------------------Stills to dropbox---------------------------------------

def StillsToDropbox():

print(“Uploading Still To Dropbox Function”)

access_token = ‘Ah ah ah, you didn’t say the magic word.。.Ah ah ah, you didn‘t say the magic word’

ctime = time.strftime(“%H:%M:%S”)

cdate = time.strftime(“%d-%m-%Y”)

try:

filename = “/Motion/{0}/DetectedAt_{1}.jpg”.format(cdate, ctime)

print(filename)

client = dropbox.client.DropboxClient(access_token)

image = open(“ToDropbox.jpg”, ‘rb’)

client.put_file(filename, image)

image.close()

os.remove(“ToDropbox.jpg”)

except:

pass

#------------------------------------------------Detect motion-----------------------------------------

def DetectMotion():

#Define vars

min_area = 400

tolarance = 25 #change in pixel

bluramount = 21

timetoforget = 0.5

kernel = np.ones((5,5),np.uint8) #used for dialate

MotionCounter = 0

MinTargetArea = 600 #smallest size to detect

MaxTargetArea = 5000 #Largest size to detect

now = time.time()

then = time.time()

#initialise camera

camera = PiCamera()

camera.resolution = (640,480)

camera.framerate = 10

rawCapture = PiRGBArray(camera, size=(640,480))

#warmup camera

time.sleep(1)

#Grab first frame & prep it to go into cv2.acumulate weight

camera.capture(rawCapture, format=“bgr”)

avg = rawCapture.array

#Crop out unwanted region

PolyCrop = np.array( [[[362,480],[613,365],[628,161],[498,0],[640,0],[640,480]]], dtype=np.int32 )

cv2.fillPoly(avg, PolyCrop, 0,0,0)

#Process image

avg = cv2.cvtColor(avg, cv2.COLOR_BGR2GRAY)

avg = cv2.GaussianBlur(avg, (bluramount, bluramount), 0)

avg = avg.copy().astype(“float”)

rawCapture.truncate(0)

print(“Ready to detect”)

#capture frames

for frame in camera.capture_continuous(rawCapture, format=“bgr”, use_video_port=True):

#Pause Switch

loopgo = GPIO.input(PauseNow)

#print(loopgo)

while loopgo == 0:

#print(loopgo)

loopgo = GPIO.input(PauseNow)

time.sleep(1)

#grabs raw numpy array

currentframe = frame.array

key = cv2.waitKey(1) & 0xFF

#Crop out unwanted region

cv2.fillPoly(currentframe, PolyCrop, 0,0,0)

rawCapture.truncate(0) #Clear frame buffer for next loop

currentgray = cv2.cvtColor(currentframe, cv2.COLOR_BGR2GRAY)

currentgray = cv2.GaussianBlur(currentgray, (bluramount, bluramount), 0)

#make time average frame

cv2.accumulateWeighted(currentgray, avg, timetoforget)

#get difference in frame

frameDelta = cv2.absdiff(currentgray, cv2.convertScaleAbs(avg))

thresh = cv2.threshold(frameDelta, tolarance, 255, cv2.THRESH_BINARY)[1]

#Turn to blob

thresh = cv2.dilate(thresh, kernel, iterations = 10) #dilate

thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel) #close holes

thresh = cv2.erode(thresh, kernel, iterations = 5) #erode

#contours

_, cnts, _= cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# loop over the contours

for c in cnts:

# if the contour is too small, ignore it

if cv2.contourArea(c) 《 min_area:

continue

# compute the bounding box for the contour, draw it on the frame,

# and update the textq

(x, y, w, h) = cv2.boundingRect(c)

#Too small : Red Box

if cv2.contourArea(c) 《 MinTargetArea:

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

#MotionCounter = MotionCounter + 1 #Debug take all the pictures

print(“MotionDetected”)

#Just right : Green Box

if cv2.contourArea(c) 》= MinTargetArea and cv2.contourArea(c) 《= MaxTargetArea:

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

MotionCounter = MotionCounter + 1 #Debug take all the pictures

print(“MotionDetected”)

#Too big : Blue Box

if cv2.contourArea(c) 》 MaxTargetArea:

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

#MotionCounter = MotionCounter + 1 #Debug take all the pictures

print(“MotionDetected”)

#Keep now up to date

now = time.time()

#MotionCounterTimer

if (MotionCounter 》 0):

if (now - then 》 10):

MotionCounter = 0

then = time.time()

#Break loop on pressing Q

if key == ord(“q”):

break

#If motion persists save current frame and activate countermeasures

if MotionCounter 》= 4:

MotionCounter = 0

cv2.imwrite(‘ToDropbox.jpg’, currentframe)

camera.close()

return True

#------------------------------------------------Main---------------------------------------

try:

#Set Pins

GPIO.setmode(GPIO.BOARD)

PauseNow=12

GPIO.setup(11,GPIO.OUT)

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

while True:

MotionDetected = False

MotionDetected = DetectMotion()

if MotionDetected == True:

HDtoYoutube()

StillsToDropbox()

except KeyboardInterrupt:

print(“Keyboard Interupt”)

except:

print(“Other Error”)

finally:

GPIO.cleanup()

#HowToTriggerRealProgrammersWithBadCode

第4步:將它放在一起

將電器塞入防水外殼,將物品擰入墻壁并使用大量膠帶和熱膠

第5步:結果

什么時候有效

第6步:誤報

如果沒有,它會噴射貓影,你的妻子和你的女兒。

Pro -tip - 在門旁邊放一個開關,暫停運動檢測程序。..。.然后忘記使用它并在放入垃圾箱時弄濕。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機視覺
    +關注

    關注

    9

    文章

    1709

    瀏覽量

    46782
  • 智能灑水器
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1130
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    AR和VR中的計算機視覺

    ):計算機視覺引領混合現實體驗增強現實(AR)和虛擬現實(VR)正在徹底改變我們與外部世界的互動方式。即便是在引人入勝的沉浸式
    的頭像 發表于 02-08 14:29 ?1580次閱讀
    AR和VR中的<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>

    量子計算機與普通計算機工作原理的區別

    ? 本文介紹了量子計算機與普通計算機工作原理的區別。 量子計算是一個新興的研究領域,科學家們利用量子力學,制造出具有革命性能力的計算機。雖然現在的量子
    的頭像 發表于 11-24 11:00 ?1498次閱讀
    量子<b class='flag-5'>計算機</b>與普通<b class='flag-5'>計算機</b>工作原理的區別

    【小白入門必看】一文讀懂深度學習計算機視覺技術及學習路線

    一、什么是計算機視覺計算機視覺,其實就是教機器怎么像我們人一樣,用攝像頭看看周圍的世界,然后理解它。比如說,它能認出這是個蘋果,或者那邊有輛車。除此之外,還能把拍到的照片或者視頻轉換
    的頭像 發表于 10-31 17:00 ?1247次閱讀
    【小白入門必看】一文讀懂深度學習<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>技術及學習路線

    計算機接口位于什么之間

    地傳輸。計算機接口可以分為內部接口和外部接口兩大類。 內部接口位于計算機內部各個部件之間,如CPU、內存、主板、硬盤、顯卡等。外部接口則位于計算機與外部設備之間,如鍵盤、鼠標、顯示
    的頭像 發表于 10-14 14:02 ?1322次閱讀

    計算機存儲系統的構成

    計算機存儲系統是計算機中用于存放程序和數據的設備或部件的集合,它構成了計算機信息處理的基礎。一個完整的計算機存儲系統通常包括多個層次的存儲
    的頭像 發表于 09-26 15:25 ?2544次閱讀

    計算機存儲的分類及其區別

    計算機存儲計算機系統中不可或缺的重要部分,用于存放程序和數據。隨著科技的進步,存儲的種類越來越多,功能和性能也日益豐富。一般來說,計算機
    的頭像 發表于 09-05 10:40 ?4020次閱讀

    簡述計算機總線的分類

    計算機總線作為計算機系統中連接各個功能部件的公共通信干線,其結構和分類對于理解計算機硬件系統的工作原理至關重要。以下是對計算機總線結構和分類的詳細闡述,內容將涵蓋總線的基本概念、內部結
    的頭像 發表于 08-26 16:23 ?5186次閱讀

    晶體管計算機和電子管計算機有什么區別

    晶體管計算機和電子管計算機作為計算機發展史上的兩個重要階段,它們在多個方面存在顯著的區別。以下是對這兩類計算機在硬件、性能、應用以及技術發展等方面區別的詳細闡述。
    的頭像 發表于 08-23 15:28 ?3622次閱讀

    微處理如何控制計算機系統

    微處理,作為計算機系統的核心部件,承擔著控制整個計算機系統運行的重要任務。它不僅是計算機的運算中心,還是控制中心,負責執行程序指令、處理數據以及協調
    的頭像 發表于 08-22 14:21 ?985次閱讀

    計算機視覺有哪些優缺點

    計算機視覺作為人工智能領域的一個重要分支,旨在使計算機能夠像人類一樣理解和解釋圖像和視頻中的信息。這一技術的發展不僅推動了多個行業的變革,也帶來了諸多優勢,但同時也伴隨著一些挑戰和局限性。以下是對
    的頭像 發表于 08-14 09:49 ?2053次閱讀

    圖像處理計算機視覺有什么關系和區別

    圖像處理計算機視覺是兩個在圖像處理領域緊密相連但又有所區別的概念。它們之間的關系和區別可以從多個維度進行探討。
    的頭像 發表于 08-14 09:36 ?1048次閱讀

    計算機視覺中的圖像融合

    在許多計算機視覺應用中(例如機器人運動和醫學成像),需要將多個圖像的相關信息整合到單一圖像中。這種圖像融合可以提供更高的可靠性、準確性和數據質量。多視圖融合可以提高圖像分辨率,并恢復場景的三維表示
    的頭像 發表于 08-01 08:28 ?1143次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>中的圖像融合

    地平線科研論文入選國際計算機視覺頂會ECCV 2024

    近日,地平線兩篇論文入選國際計算機視覺頂會ECCV 2024,自動駕駛算法技術再有新突破。
    的頭像 發表于 07-27 11:10 ?1466次閱讀
    地平線科研論文入選國際<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>頂會ECCV 2024

    DRAM在計算機中的應用

    DRAM(Dynamic Random Access Memory,動態隨機存取存儲)在計算機系統中扮演著至關重要的角色。它是一種半導體存儲,用于存儲和快速訪問數據,是計算機主內存
    的頭像 發表于 07-24 17:04 ?3018次閱讀

    計算機視覺技術的AI算法模型

    計算機視覺技術作為人工智能領域的一個重要分支,旨在使計算機能夠像人類一樣理解和解釋圖像及視頻中的信息。為了實現這一目標,計算機視覺技術依賴于
    的頭像 發表于 07-24 12:46 ?1817次閱讀