Chất lượng hình ảnh khác nhau từ chụp picamera đến mảng và đường dẫn gọn gàng


8

Chất lượng chụp từ Pi Camera thay đổi khi được chụp thành mảng numpy và khi được chụp trực tiếp vào một đường dẫn. Cái trước có nhiều màu hồng hơn nó sau.

Tại sao vậy.?
Mã tôi đã sử dụng để chụp ảnh:

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))

Thời gian để chụp ảnh thành mảng numpy bằng một nửa so với chụp đường dẫn trực tiếp. Vì vậy, nó có liên quan đến khử nhiễu hình ảnh.?

Hình ảnh Được chụp thành mảng numpy: 0,71 giây Hình ảnh được chụp vào đường dẫn: 1,52 giâyHình ảnh được chụp vào mảng numpy

Hình ảnh được chụp vào một đường dẫn


Đặt thời gian kích hoạt cho numpy sau khi viết. Sau đó, bạn thực sự có thể so sánh. Tôi tò mò
jaromrax

@jaromrax Làm như vậy sẽ tăng thời gian kích hoạt lên khoảng 0,925 giây. Nhưng nó vẫn ít hơn thế cho việc chụp đường dẫn.
khắc nghiệt

Nó có thể là một vấn đề nén? Ví dụ: có thể cv2 không sử dụng tính năng lọc nhưng picamera thì có. Các kích thước của các tập tin đầu ra là gì? Bạn có thể kiểm tra với du normal_capture.pngdu array_capture.png
Hunter Akins

Câu trả lời:


1

Theo Tài liệu Picamera trong phần 3.5 của phần công thức nấu ăn cơ bản:

Bạn có thể muốn chụp một chuỗi các hình ảnh trông giống nhau về độ sáng, màu sắc và độ tương phản (ví dụ, điều này có thể hữu ích trong chụp ảnh timelapse). Các thuộc tính khác nhau cần được sử dụng để đảm bảo tính nhất quán trên nhiều ảnh. Cụ thể, bạn cần đảm bảo rằng thời gian phơi sáng, cân bằng trắng và mức tăng của máy ảnh đều được cố định:

Để sửa thời gian phơi sáng, đặt shutter_speedthuộc tính thành giá trị hợp lý. Tùy chọn, đặt isothành một giá trị cố định. Để khắc phục mức tăng phơi sáng, hãy để analog_gaindigital_gaingiải quyết các giá trị hợp lý, sau đó đặt phơi sáng_mode thành 'off'. Để khắc phục cân bằng trắng, thiết lập awb_modeđể 'off', sau đó đặt awb_gainsvào một (đỏ, xanh dương) tuple tăng.

Có thể khó biết những giá trị phù hợp có thể là gì cho các thuộc tính này. Đối với iso, một quy tắc đơn giản là 100 và 200 là giá trị hợp lý cho ban ngày, trong khi 400 và 800 tốt hơn cho ánh sáng yếu. Để xác định một giá trị hợp lý cho shutter_speedbạn có thể truy vấn exposure_speedthuộc tính. Đối với mức tăng phơi sáng, thường là đủ để đợi cho đến khi analog_gainlớn hơn 1 trước khi exposure_modeđược đặt thành 'off'. Cuối cùng, để xác định các giá trị hợp lý cho việc awb_gains truy vấn thuộc tính đơn giản trong khi awb_modeđược đặt thành một giá trị khác 'off'. Một lần nữa, điều này sẽ cho bạn biết mức tăng cân bằng trắng của máy ảnh được xác định bởi thuật toán cân bằng trắng tự động.

Kịch bản sau đây cung cấp một ví dụ ngắn gọn về cách định cấu hình các cài đặt này:

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)])
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.