Programim dhe zhvillim, javascript, python, php, html

Regjistrimi i videos me mjedër duke përdorur opencv+picamera stream IO

Unë jam duke përdorur Raspberry thjesht për të shfaqur një video (vetëm këtë tani për tani). Për ta bërë këtë, duhet të përdor opencv (cv2). Provova shumë zgjidhje, por tani dua të kap videon duke përdorur bibliotekën Picamera. Unë do t'ju tregoj kodin tim:

import io
import time
import picamera
import cv2
import numpy as np

# Create the in-memory stream
stream = io.BytesIO()
with picamera.PiCamera() as camera:
    while True:
        camera.capture(stream, format='jpeg')
        # Construct a numpy array from the stream
        data = np.fromstring(stream.getvalue(), dtype=np.uint8)
        # "Decode" the image from the array, preserving colour
        image = cv2.imdecode(data, 1)
        cv2.imshow('frame', image)

Është vërtet e thjeshtë siç mund ta shihni, por nuk funksionon. Në fakt nuk e hap dritaren. Unë do të doja të riprodhoja sjelljen e një tjetër, e cila funksionon në mënyrë të përsosur:

#import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Ndonje ide ?


  • Duket se cv2.imshow ('kornizë', imazh) nuk po funksionon siç duhet. 03.10.2014
  • ke harruar linjën cv2.waitKey(). nuk do të funksionojë pa. 03.10.2014
  • Vërtet? ... Pse? ... A nuk është cv2.waitKey() vetëm për marrjen e komandave nga tastiera? 03.10.2014
  • definitivisht jo. ai përmban ciklin e mesazheve të dritares dhe bën blittingun aktual 03.10.2014
  • Tani ajo hap dritaren, por në fakt është bosh. A kam harruar gjë? 03.10.2014

Përgjigjet:


1

Shiko këtë blog postimi. Ai ka kodin për të funksionuar këtë:

# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2

# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
rawCapture = PiRGBArray(camera)

# allow the camera to warmup
time.sleep(0.1)

# grab an image from the camera
camera.capture(rawCapture, format="bgr")
image = rawCapture.array

# display the image on screen and wait for a keypress
cv2.imshow("Image", image)
cv2.waitKey(0)

Pak më poshtë ka një shembull me kapjen e imazheve vazhdimisht.

# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2

# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(640, 480))

# allow the camera to warmup
time.sleep(0.1)

# capture frames from the camera
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
    image = frame.array

    # show the frame
    cv2.imshow("Frame", image)
    key = cv2.waitKey(1) & 0xFF

    # clear the stream in preparation for the next frame
    rawCapture.truncate(0)

    # if the `q` key was pressed, break from the loop
    if key == ord("q"):
        break
08.04.2015
  • Unë kam sjelljen mjaft të çuditshme se zgjidhja juaj e parë do të funksiononte dhe e dyta prodhon vetëm korniza të zeza në Raspi 3 tim. A ka ndonjë ide se çfarë mund të jetë problemi këtu? 05.08.2016

  • 2

    provoni:

    sudo modprobe bcm2835-v4l2 
    

    për t'u siguruar që keni videon për drejtuesit e linux

    13.10.2016

    3

    Unë kisha një problem të ngjashëm kur dalja e kamerës po funksiononte, por transmetimi i videos ishte gjithmonë i zi. Rezulton se është një problem i versionit të pikamerës. Instalimi i 1.10 funksionoi për mua pa ndonjë devijim tjetër nga kodi demo:

    pip install 'picamera[array]'== 1.10
    
    19.02.2018

    4

    Së pari, cv2.waitKey() duhet të shtohet në rreshtin vijues të cv2.imshow ('kornizë', imazh). Pastaj, stream.seek(0); stream.truncate(); duhet të shtohet në fund të lakut, përndryshe imazhi nuk do të ndryshojë.

    28.05.2016
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..