ট্র্যাভেল করতে ধীর?


18

আমি "অনেকগুলি" রাস্পবেরিগুলি একসাথে ট্রিগার করার চেষ্টা করছি, যখন রাস্পিসটিলটি ব্যবহার করা কেবল পরীক্ষার জন্যই ছিলাম, আমি ভাবছি কেন ছবি তোলা এত ধীর, আমি একটি পরীক্ষা করেছিলাম এবং একই সাথে এই কমান্ডটি প্রবেশ করানোর সময়:

raspistill -o /home/pi/test55.jpg -ex sports --nopreview

আমি ক্যামেরার সামনে আইফোন ক্রোনোমিটার শুরু করি। ফলাফল? 7 সেকেন্ড, 09 (তবে তীক্ষ্ণ, তাই শাটার স্পিড ইত্যাদি ঠিক ছিল, আমি ঝাপসা নম্বর পাচ্ছিলাম না)। ছবি তোলার আগে এক্স সেকেন্ড নেওয়ার জন্য এটি "না" করার জন্য আমি কী করতে পারি? আমি কয়েক শতাধিক আরপিআই সিঙ্ক করতে চলেছি এবং আমি চাই না যে তাদের মধ্যে কয়েকটি ছবি 4 বা অন্য কেউ 10 সেকেন্ডে নেবে যাতে আমি সেখানে কী ঘটছে তা বুঝতে চাই।

উত্তর:


5

আপনার ক্যামেরা প্রক্রিয়াটি সর্বদা চলমান থাকা দরকার।

এটিই কেবলমাত্র আমি (প্রায়) 50 মিটার ফলাফল পেতে পারি ac আমি সর্বত্র একটি সমাধানের জন্য চেয়েছিলাম। আমার গতি সেন্সর প্রকল্পের জন্য 1 সেকেন্ডটি খুব ধীর ছিল।

@ ডেভ জোনসের প্রকল্প এটি কীভাবে করবেন তা নির্ধারণ করতে আমাকে সহায়তা করেছিল।

মাত্র 2 টি ফাইল:

একটি ডেমন, সর্বদা চলমান এবং একটি ক্লায়েন্ট।

ডেমনটি যেখানে আপনি সমস্ত ক্যামেরা সেটিংস সেট করেছেন।

picam-daemon.py

picam-client.py

পাইথন পিকাম -ডেমন.পি

import threading
import os, io, base64, time, socket, picamera, daemon
import daemon.runner

MAX_LENGTH = 50 # max length of any possible entry from "client"
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # setup socket
PORT = 10000 # port 10000
HOST = '127.0.0.1' # runs on local host
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # this allows us to override port, prevents error
serversocket.bind((HOST, PORT)) # lock server to this port and host
serversocket.listen(10) # max 10 clients


# Waits for commands, such as "snap" and "ack"
# Runs over "sockets"
def handle(clientsocket):
    while 1:
        buf = clientsocket.recv(MAX_LENGTH)

        # Receive the SNAP command. Take a picture with PiCam.
        if buf == 'snap':
            start = time.time()
            camera.capture('/home/pi/ir/picam-latest-snap.jpg')
            finish = start - time.time()
            print finish
            print 'Picture Taken!'

        if buf == 'ack':
            print 'Ping: Hello!'

        if len(buf) == 0: break

# Camera is always loaded here
# The "magic" is in the camThread, this allows a picture to be captured, then it gracefully closed the camera connection and reopens it. This produces very fast captures (54ms vs 1.5s!)
while 1:
    # setup camera
    camera = picamera.PiCamera()
    camera.resolution = (640, 480)
    #camera.zoom = (0.2, 0.2, 1.0, 1.0)
    camera.exposure_mode = 'sports'
    print('Camera server running')

    # accept connections from outside, in order to receive commands
    (clientsocket, address) = serversocket.accept()
    ct = threading.Thread(target=handle, args=(clientsocket,))
    ct.run() # this can be run(), because it can be scaled.

    print 'Camera thread starting.'
    camThread = threading.Thread()
    while camThread.is_alive():
        camThread.join(1)
    camThread.run() # this must be start(), otherwise PiCam will crash. This is because PiCam cannot receive more than 1 connection.
    print 'Camera thread ended'
    camera.close() # Gracefully close PiCam if client disconnects

(দ্বিতীয় টার্মিনালে) পাইথন পিকাম-ক্লায়েন্ট.পি

import socket
import sys


HOST = '127.0.0.1'
PORT = 10000
s = socket.socket()
s.connect((HOST, PORT))

print s

while 1:
    msg = raw_input("Command To Send: ")
    if msg == "close":
       s.close()
       sys.exit(0)
    s.send(msg)

আমি এই উত্তরটি পোস্ট করছি কারণ আমি এটি গুগলে খুঁজে পেয়েছি, নিজেই একটি উত্তর খোঁজার চেষ্টা করছি। আমি একটি খুঁজে পাইনি, তাই আমাকে কিছু প্রকল্পের চারপাশে খনন করতে হবে এবং নিজেই কিছু নিয়ে আসতে হয়েছিল।


একই সমস্যার মুখোমুখি হওয়ার সময়, আমি একই সমাধানটি নিয়ে এসেছি, তবে কোডটি লেখার কাছাকাছি কোথাও পাইনি। অন্য কেউ আমাকে এটি মারল তা দেখে খুশি!
নিক Coons

6

আপনার 0 এর সময়সীমা নির্দিষ্ট করতে হবে।

রাস্পিসটিল সাহায্য থেকে

-timeout "Time (in ms) before takes picture and shuts down (if not specified, set to 5s)

একটি আদেশ কার্যকর করতে কতক্ষণ সময় নেয় তা পরীক্ষা করতে আপনি "সময়" ব্যবহার করতে পারেন

time raspistill -o /home/pi/test55.jpg -ex sports --nopreview --timeout 0

এটি 5 সেকেন্ডের ডিফল্ট সময়সীমা সরিয়ে দেয় তবে বিষয়টি আমি তার চেয়ে বেশি পাচ্ছি, ফোরামে আমি যা বুঝতে পেরেছি তাতে রাস্পিসটিল ব্যবহারের কোনও বিলম্বের চিত্র না পাওয়ার কোনও আসল উপায় নেই
রোনান থাইবাডাউ

8
আমার রাস্পবেরিতে, 0 নির্ধারণের সময়সীমাটি "অসীম" বলে মনে হচ্ছে, যখন "1" এর একটি সময়সীমা নির্দিষ্ট করার সময় কৌশলটি মনে হচ্ছে
মন্ডকিন

4
এছাড়াও, এত কম সময়সীমা ব্যবহার করা ক্যামেরাকে সংগ্রহকারীদের প্রকাশের জন্য পর্যাপ্ত সময় দেয় না, ফলে গা dark় চিত্রটি আসে। আমি দেখতে পাচ্ছি যে ছবিটি অন্ধকার এবং ঝাপসা হতে শুরু করার আগে আমি প্রায় 300 এরও কম যেতে পারছি না।
সেরিন 21

2
গুরুতরভাবে প্রয়োজনীয় না হলে -tবিকল্পটি ছেড়ে দিন । @ সেরিন যেমন বলেছেন যে এটি খুব কম সেট করা থাকলে চিত্রটি কোনওভাবে ধ্বংস করে। সত্য কথা বলতে গেলে রাস্পবেরি পাইয়ের ডকুমেন্টেশনে এই বিকল্প সম্পর্কে খুব কম তথ্য রয়েছে এবং সময়সীমাটি একটি সহজ "বিলম্ব" / "টাইম ট্রিগার" যা এটি পরিষ্কারভাবে নয় তা মিথ্যা অনুমানের দিকে নিয়ে যায়।
ফ্ল্যাটারন

4

সহজ এবং দ্রুত ক্যামেরা শটগুলির জন্য অনুমতি দেওয়ার জন্য আমি আমার .Bash_ প্রোফাইলে নীচের নামটি নির্দিষ্ট করেছি:

alias shot='SHOTTIME=$(date +"%Y-%m-%d_%H%M") && raspistill -o shot-$SHOTTIME.jpg --nopreview --exposure sports --timeout 1

আমি যখনই shotকমান্ড লাইনে টাইপ করি , টাইম স্ট্যাম্প সহ একটি চিত্র সংরক্ষণ করা হয়, উদাহরণস্বরূপ shot-2016-02-27_0934.jpg


1
রাস্পবেরি পাই স্ট্যাক এক্সচেঞ্জ সম্প্রদায়টিতে আপনাকে স্বাগতম! এমনকি সঙ্গে --timeout 1(?) যুক্তি আমি এটি ছিল অবাক হবো যে দ্রুত - কিন্তু না (এখনও) যেমন একটি রাষ্ট্র আমার সিস্টেম আছে হিসাবে আমি আছে এটা কে আমার front- আনলক করার চেষ্টা করে একটি স্ন্যাপ-শট লাগে দরজা আমি সত্যিই পিক-নিট করতে পারি না! 8-) যদিও কমান্ড লাইনটির ভাল ব্যবহার (ঘড়িটি সেট করা হয়েছে তা ধরে নিয়ে) - সর্বাধিক উল্লেখযোগ্য মানগুলির সাথে ডেটটাইম স্ট্যাম্প স্থাপন করা সহ আলফা-সংখ্যাসমূহের ক্রম-ক্রমটি তারিখের বাছাই-ক্রমের সমান!
স্লাইভেন

1
$ $ টাইম শট রিয়েল 0 এম0.040 এর ব্যবহারকারী 0 এম0.010 এস সিস 0 এম0.020 এস কিড;)
এনডিবি

1
০.০৪০ সেকেন্ড দুর্ভাগ্যক্রমে সত্য হওয়া অনেক দূরে .. উপরের সময় কমান্ডের ব্যবহার ত্রুটিযুক্ত, এটি কেবলমাত্র শটটাইম ভেরিয়েবল বরাদ্দ করতে সময় গ্রহণ করবে, চিত্রটি ক্যাপচার না করে। আসল সময়টি ~ 1 সেকেন্ড
slackhacker

আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ, আপনি ঠিক বলেছেন। আমি আমার মূল পাঠ্য থেকে সময়টি সরিয়েছি।
এনডিবি

2

আপনি কম্পাউন্ডপি প্রকল্পটি দেখতে চান (সম্পূর্ণ প্রকাশ: আমি লেখক)। এটি ক্যামেরার মডিউলগুলির সাথে অসংখ্য পাই থেকে ক্যাপচারগুলি ট্রিগার করার উদ্দেশ্যে এবং ইউডিপি ব্রডকাস্ট প্যাকেটগুলি ব্যবহার করে সেগুলি যথাসম্ভব কাছাকাছিভাবে ট্রিগার করতে পারে। একটি ডিমন প্রতিটি পাইতে চালিত হয় যা ক্যামেরাটি জ্বালিয়ে দেয় এবং ক্যাপচার কমান্ডযুক্ত ইউডিপি প্যাকেট প্রাপ্তির পরে ক্যাপচারগুলি ট্রিগার করে (অন্যান্য কমান্ডগুলি ক্যামেরাটি কনফিগার করার জন্য উপলব্ধ; প্রোটোকলটি বেশ ভালভাবে নথিভুক্ত )) ইথারনেট ব্যবহার করে একটি সেটআপ আদর্শ, তবে ওয়াইফাই পাশাপাশি কাজ করবে, যদিও আপনাকে সেই ক্ষেত্রে (প্যাকেটের ক্ষতি / ভেরিয়েবল ল্যাটেন্সির কারণে) শালীন সিঙ্ক্রোনাইজেশন পেতে সময়-বিলম্ব কার্যকারিতাটি ব্যবহার করতে হতে পারে।

আমি এটি 100 পাই এর সাথে পরীক্ষা করাতে পারি না - এই মুহূর্তে এটির সবচেয়ে বড় সেটআপটি 20 এর সাথে জড়িত, তবে আমি বড় আকারের স্কেল জড়িত কোনও সমস্যা শুনতে আগ্রহী।

প্রকল্পের একটি অন্তর্ভুক্ত কমান্ড লাইন ক্লায়েন্ট (তাই এটা লিনাক্স / ম্যাক / উইন্ডোজ কাজ করা উচিত কিন্তু এটি শুধুমাত্র এই সময়ে উবুন্টু উপর পরীক্ষা করা হয়েছে, এবং এটি এখনও অনথিভুক্ত র Qt লেখা), একটি গুই ক্লায়েন্ট, এবং একটি পাইথন ভিত্তিক ক্লায়েন্ট গ্রন্থাগার জন্য ব্যাচ কাজ লেখার।


আমি ইউডিপি অংশ বা ক্লায়েন্ট সম্পর্কে খুব চিন্তিত নই (আমি এগুলি হাত দ্বারা নিয়ন্ত্রণ করতে চাই না, তারা একটি বৃহত্তর প্রকল্পের দ্বারা নিয়ন্ত্রিত হয়) তবে কম্পাউন্ডপি এমন কিছু ব্যবহার করে যা তাত্ক্ষণিক ক্যাপচারের কাছে লাগে বা এটিরও রয়েছে রাস্পস্টিলের মতো বিলম্ব?
রোনান থাইবাডাউ

ডেভ, মনে হচ্ছে আপনি এমন প্রকল্পের লেখক যা আমার যা প্রয়োজন তার চারপাশে ঘোরে, আমাদের কোনও স্কাইপ বা ইমেল আলোচনা করার কোনও সুযোগ আছে কি?
রোনান থাইবাডাউ

অবশ্যই - আমাকে সরাসরি ইমেল করতে দ্বিধা বোধ করবেন না (আমার ই-মেইল ঠিকানাটি আমার গিটহাব প্রোফাইলে দৃশ্যমান হওয়া উচিত )
ডেভ জোনস

1
ওহ, এবং আপনার অন্য প্রশ্নে: এটি তাত্ক্ষণিক কাছাকাছি। কম্পাউন্ডপি ডেমন শুরু করা হলে এটি ক্যামেরাটি আরম্ভ করে এবং কনফিগার করে (এটি যেখানে রাস্পিস্টিলের ক্ষেত্রে অনেক বিলম্ব আসে) তারপরে ক্যাপচার কমান্ডের অপেক্ষায়। ক্যাপচার আদেশটি তাত্ক্ষণিকভাবে ক্যাপচারের কারণ হতে পারে বা ক্যাপচারের আগে নির্দিষ্ট টাইমস্ট্যাম্প পর্যন্ত অপেক্ষা করতে পারে। তাত্ক্ষণিক ক্ষেত্রে, কমান্ড প্রাপ্তি এবং ক্যাপচারের মধ্যে বিলম্বটি মিলিসেকেন্ড হওয়া উচিত।
ডেভ জোন্স 13

ডেভ জোন্স, ক্যাপচার নেওয়ার আগে ক্যামেরাটি শুরু করার এই ধারণাটি, আপনি আরও তথ্য দিতে পারেন? আমরা কি কমান্ডলাইন থেকে এটি করতে পারি?
অলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.