2016-11-03 19 views
0

나는 아래의 코드를 가지고 있고 많은 부분을 수정할 :라즈베리 파이 카메라와 OpenCV의 파이썬

어떻게 대신 Raspbery 파이 카메라 USB 카메라를 사용할 수 있습니까?

나에게 힌트를 주거나 올바른 코드를 작성한 사람에게 감사 할 것입니다.

코드는 다음과 같습니다

import cv2.cv as cv 
import smbus 
import cv2 
bus = smbus.SMBus(1) 
address = 0x04 

def sendData(value): 
    bus.write_byte(address, value) 
    return -1 
def readData(): 
    state = bus.read_byte(address) 
    return state 
def ColorProcess(img): 
    imgHSV = cv.CreateImage(cv.GetSize(img) ,8 ,3) 
    cv.CvtColor(img, imgHSV, cv.CV_BGR2HSV) 
    imgProcessed = cv.CreateImage(cv.GetSize(img) ,8 ,1) 
    cv.InRangeS(imgHSV, (100, 94, 84), (109, 171, 143), imgProcessed) 
    return imgProcessed 
def main(): 
    width = 320 
    height = 240 

    capture = cv.CreateCameraCapture(0) 
    cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, width) 
    cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, height) 
    cv.NamedWindow("output", 1) 
    cv.NamedWindow("processed", 1) 

    while True: 
     frame = cv.QueryFrame(capture) 
     cv.Smooth(frame, frame, cv.CV_BLUR, 3) 
     imgColorProcessed = ColorProcess(frame) 
     mat = cv.GetMat(imgColorProcessed) 
     moments = cv.Moments(mat, 0) 
     area = cv.GetCentralMoment(moments, 0, 0) 
     moment10 = cv.GetSpatialMoment(moments, 1, 0) 
     moment01 = cv.GetSpatialMoment(moments, 0, 1) 

     if (area > 60000): 
      posX = int(moment10/area) 
      posY = int(moment01/area) 
      ali = long(2000000) 

      state = readData() 
      if state == 1: 
       sendData(posX) 
       sendData(posY) 

      print 'x: ' + str(posX) + 'y: ' + str(posY) 

     cv.ShowImage("processed", imgColorProcessed) 
     cv.ShowImage("output", frame) 

     if cv.WaitKey(10) >= 0: 

      break 

    return; 

if __name__ == "__main__": 
     main() 

내가 높은 어떤 도움을 주셔서 감사합니다.

감사합니다.

+0

하나의 문제는, – Miki

+0

나는 당신을 위해 감사하겠습니다. – ITLover

+0

@ITLover 답변을 원하면 미묘한 힌트로 3 개의 개별 질문으로 나눠야한다고 말하고 싶습니다. –

답변

0

Pi의 LX 터미널에서이 명령을 실행하면 드라이버를 관리합니다. 당신은 단지 하나를 대답하면 질문 당

sudo modprobe bcm2835-v4l2