picameraのキャプチャから派手な配列やパスまで、さまざまな画質


8

numpy配列にキャプチャした場合とパスに直接キャプチャした場合、Piカメラからのキャプチャの品質は異なります。前者は後者よりもピンクがかった色合いです。

何故ですか。?
画像のキャプチャに使用したコード:

from picamera import PiCamera
import cv2
import time

camera = PiCamera()
camera.resolution = (1280, 720)
img = np.empty((720, 1280, 3), dtype=np.uint8)

start = time.time()
camera.capture(img, "bgr")
print("Trigger time: " + str(time.time() - start))
cv2.imwrite("array_capture.png", img)

start = time.time()
camera.capture("normal_capture.png")
print("Trigger time: " + str(time.time() - start))

numpy配列にイメージをキャプチャするのにかかる時間は、ダイレクトパスキャプチャの半分です。だから、それは画像のノイズ除去に関連していますか?

numpy配列に キャプチャされた画像:0.71秒パスにキャプチャされた画像:1.52秒numpy配列にキャプチャされた画像

パスにキャプチャされた画像


書き込み後にnumpyのトリガー時間を入れます。その後、本当に比較できます。私は好奇心が強い
jaromrax 2017年

@jaromraxこれにより、トリガー時間が約0.925秒に増加します。しかし、それでもパスキャプチャの場合よりは少なくなります。
harshatech2012 2017年

圧縮の問題でしょうか?たとえば、cv2はフィルタリングを使用していませんが、picameraは使用しています。出力ファイルのサイズは?あなたがチェックすることができるdu normal_capture.pngdu array_capture.png
ハンターAkins

回答:


1

基本的なレシピセクションのパート3.5のPicameraドキュメントによると:

明るさ、色、コントラストの点ですべて同じように見える一連の画像をキャプチャしたい場合があります(これは、たとえばタイムラプス写真で役立ちます)。複数のショットにわたって一貫性を確保するには、さまざまな属性を使用する必要があります。具体的には、カメラの露出時間、ホワイトバランス、ゲインがすべて固定されていることを確認する必要があります。

露出時間を修正するには、shutter_speed属性を適切な値に設定します。オプションでiso、固定値に設定します。、露光利益を修正してみましょうするために、analog_gainそしてdigital_gainその後、適切な値に落ち着くに設定exposure_mode 'off'。ホワイトバランスを修正するには、をに設定awb_mode'off'、次にawb_gainsゲインの(赤、青)タプルに設定します。

これらの属性に適切な値が何かを知るのは難しい場合があります。のiso単純な経験則では、日中の場合は100と200が妥当な値であり、暗い場所では400と800が適切です。適切な値を決定するにshutter_speedは、exposure_speed属性をクエリします。露出ゲインの場合は、通常、analog_gainが1を超えるまで待ってからにexposure_mode設定するだけで十分'off'です。最後に、が以外の値に設定されているときにawb_gains プロパティをクエリするだけの適切な値を決定します。繰り返しになりますが、これにより、オートホワイトバランスアルゴリズムによって決定されたカメラのホワイトバランスゲインがわかります。awb_mode'off'

次のスクリプトは、これらの設定を構成する簡単な例を示しています。

from time import sleep
from picamera import PiCamera

camera = PiCamera(resolution=(1280, 720), framerate=30)
# Set ISO to the desired value
camera.iso = 100
# Wait for the automatic gain control to settle
sleep(2)
# Now fix the values
camera.shutter_speed = camera.exposure_speed
camera.exposure_mode = 'off'
g = camera.awb_gains
camera.awb_mode = 'off'
camera.awb_gains = g
# Finally, take several photos with the fixed settings
camera.capture_sequence(['image%02d.jpg' % i for i in range(10)])
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.