Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2017, 14:33   #1
persej911
Новичок
Джуниор
 
Регистрация: 15.05.2017
Сообщений: 1
По умолчанию замок rasberry Pi OpenCv камера рука

Для проекта замка на rasberry Pi с камерой был написан код на языке Питон 2.7 .
Если в камеру показать кисть руки, то замок открывается. При нажатии на копку на замке тоже открывается замок на некоторое время.Используется библиотека OpenCv.
Если piCam6.py запускать из терминала после загрузки Rasperbean (управление с другого ноотбука через wifi по ssh)работает как надо.
Но, что делать если пропадет на время питание на rasberry Pi? Надо опять брать нооотбук и запускать снова код piCam6.py.
Это не удобно.
Решил сделать автозагрузку кода piCam6.py после загрузки ОС. Проблема в том, что на кнопку реагирует как надо, а от камеры замок не срабатывает.Он чувствует нажатие кнопки, длительность свечении светодиода (срабатывание замка) 5с.
Автозагрузку установил с помощью команды gksudo leafpad /etc/xdg/autostart/radio.desktop (там были ссылка на piCam6.py).
Решил хитрее подойти- сначала загружается skan_booton.py после загрузки ОС, он чувствует нажатие кнопки .После нажатия копки с помощью команды ret=subprocess.call('python /home/pi/zamok/piCam6.py ',shell=True) поднимается основной код.
Но проблема осталась- не реагирует на кисть камера.
Если вручную из терминала запускать skan_booton.py (после загрузки ОС). Он вытягивает piCam6.py как положено, камера на кисть отзывается. Это также видно по ответам в терминале и длительном свечении светодиода (срабатывание замка) 5с.
Перепробовал разные варианты автозагрузки- проблема осталась.
Добавлено через 7 минут
Для проекта замка на rasberry Pi с камерой был написан код на языке Питон 2.7 .
Если в камеру показать кисть руки, то замок открывается. При нажатии на копку на замке тоже открывается замок на некоторое время.Используется библиотека OpenCv.
Если piCam6.py запускать из терминала после загрузки Rasperbean (управление с другого ноотбука через wifi по ssh)работает как надо.
Но, что делать если пропадет на время питание на rasberry Pi? Надо опять брать нооотбук и запускать снова код piCam6.py.
Это не удобно.
Решил сделать автозагрузку кода piCam6.py после загрузки ОС. Проблема в том, что на кнопку реагирует как надо, а от камеры замок не срабатывает.Он чувствует нажатие кнопки, длительность свечении светодиода (срабатывание замка) 5с.
Автозагрузку установил с помощью команды gksudo leafpad /etc/xdg/autostart/radio.desktop (там были ссылка на piCam6.py).
Решил хитрее подойти- сначала загружается skan_booton.py после загрузки ОС, он чувствует нажатие кнопки .После нажатия копки с помощью команды ret=subprocess.call('python /home/pi/zamok/piCam6.py ',shell=True) поднимается основной код.
Но проблема осталась- не реагирует на кисть камера.
Если вручную из терминала запускать skan_booton.py (после загрузки ОС). Он вытягивает piCam6.py как положено, камера на кисть отзывается. Это также видно по ответам в терминале и длительном свечении светодиода (срабатывание замка) 5с.#!/usr/bin/env python
from picamera.array import PiRGBArray
from picamera import PiCamera
Перепробовал разные варианты автозагрузки- проблема осталась.

skan_booton.py
Код:
#!/usr/bin/env python
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
import sys
import subprocess
import RPi.GPIO as GPIO
ENABLE = 1; DISABLE = 0
#LED CONFIG - Set GPIO Ports
LEDpin = 25 
pin_read=18
#Setup the wiring
GPIO.setmode(GPIO.BCM)
#Setup Ports
GPIO.setup(LEDpin,GPIO.OUT)
# for pin GRIO
GPIO.setup(pin_read,GPIO.IN,pull_up_down=GPIO.PUD_UP)
 
def blink():
    print 'hands is!'
        GPIO.output(LEDpin,ENABLE)
        print "LED ON"
    ret=subprocess.call('python /home/pi/zamok/piCam6.py ',shell=True)
    time.sleep(1)
    #ret=subprocess.call('ls -l',shell=True)
    # time.sleep(1) 
    GPIO.output(LEDpin,DISABLE)
        print "LED Off"
 
while True:
    GPIO.output(LEDpin,DISABLE)
    print "LED OFF"
    if GPIO.input(pin_read) == 0:
        blink()
    time.sleep(0.5)
piCam6.py
Код:
#!/usr/bin/env python
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
import sys
#import imutils
# Get user supplied values
#cascPath = sys.argv[1]
# Create the haar cascade
#faceCascade = cv2.CascadeClassifier(cascPath)
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (300, 300)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(300, 300))
# allow the camera to warmup
time.sleep(0.1)
#lastTime = time.time()*1000.0
# capture frames from the camera
 
#import cv2
import  numpy   as  np
face_cascade=cv2.CascadeClassifier('Hand.Cascade.1.xml')
#cap    =   cv2.VideoCapture(0)
#scaling_factor =   0.5
 
# fop pin GRIO
#LEDblink.py
import time
import RPi.GPIO as GPIO
 
ENABLE = 1; DISABLE = 0
#LED CONFIG - Set GPIO Ports
LEDpin = 25 
pin_read=18
 
#Setup the wiring
GPIO.setmode(GPIO.BCM)
#Setup Ports
GPIO.setup(LEDpin,GPIO.OUT)
# for pin GRIO
GPIO.setup(pin_read,GPIO.IN,pull_up_down=GPIO.PUD_UP)
 
def blink():
    print 'hands is!'
        #cv2.putText(img,"2", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 2, 2)
        GPIO.output(LEDpin,ENABLE)
        print "LED ON"
        time.sleep(5)   
 
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    # grab the raw NumPy array representing the image, then initialize the timestamp
    # and occupied/unoccupied text
    #ret,   frame   =   cap.read()
    image = frame.array
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #frame  =   cv2.resize(frame,   None,   fx=scaling_factor,  fy=scaling_factor,interpolation=cv2.INTER_AREA)
    #gray= cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    face_rects  =   face_cascade.detectMultiScale(gray, 1.3,    20)
    for (x,y,w,h)   in  face_rects:
        blink()
        #GPIO.output(LEDpin,DISABLE)
        #print "LED OFF"
        #cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),3)
    #cv2imshow('Face    Detector',  frame)
    #gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # Detect faces in the image
    
    #print time.time()*1000.0-lastTime," Found {0} faces!".format(len(faces))
    #lastTime = time.time()*1000.0
    # Draw a rectangle around the faces
    #for (x, y, w, h) in faces:
    #cv2.circle(image, (x+w/2, y+h/2), int((w+h)/3), (255, 255, 255), 1)
    # show the frame
    GPIO.output(LEDpin,DISABLE)
    print "LED OFF"
    if GPIO.input(pin_read) == 0:
        blink()
    ##cv2.imshow("Frame", image)
    key = cv2.waitKey(1) & 0xFF
 
    # clear the stream in preparation for the next frame
    rawCapture.truncate(0)
    
    # if as pressed, break from the loop
    if key ==ord("q"):
        break
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.05.2017 в 09:49.
persej911 вне форума Ответить с цитированием
Старый 19.05.2017, 22:02   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Вы прямо текст как кучу навоза сюда выволи, даже читать тяжело. Хоть код обрамите тегами для кода чтоли

пс. Хотел прочитать и вгикнуть чуть глаз не сломал.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 19.05.2017 в 22:05.
pompiduskus вне форума Ответить с цитированием
Старый 25.05.2017, 09:29   #3
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Как то задача выглядит микроскопом по гвоздям.
В чем смысл реакции на кисть для открытия замка? У кисти есть критерии, которые требуют целого OpenCV? Это ж не отпечатки пальцев, фэйс, сетчатка. Что мешает чужой кисти открыть замок?

А если нет различия между кистями и речь о малинке, то почему не поступить проще - тупо реакцию на движение в кадре или вообще фотодатчик поставить на DIO?
kutani вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Rasberry pi и Windows develsnik Windows 3 16.03.2013 12:47
Экран для rasberry pi develsnik Общие вопросы по программированию, компьютерный форум 3 14.03.2013 23:36
Кодовый замок) HeLLiSH C++ Builder 12 22.06.2012 15:19
Хочу сделать простого рука-манипулятора ubun Микроконтроллеры, робототехника, схемотехника, 3D принтеры 11 22.01.2011 02:26