csi --- cảm biến camera¶
Module csi là giao diện hướng đối tượng hiện đại để giao tiếp với (các) cảm biến camera trên OpenMV Cam. Mỗi cảm biến vật lý được đại diện bởi một thể hiện CSI, vì vậy các bo mạch hình ảnh đa phổ kết hợp cảm biến màu sắc với cảm biến nhiệt hoặc cảm biến sự kiện có thể điều khiển từng cảm biến độc lập bằng cách truyền cid khác nhau vào hàm khởi tạo. Các cam có một cảm biến chỉ cần khởi tạo một CSI.
Một đối tượng CSI sở hữu toàn bộ cấu hình cảm biến -- định dạng điểm ảnh, kích thước khung hình / cửa sổ, thời gian phơi sáng / độ khuếch đại / cân bằng trắng, gương ngang và lật dọc phần cứng, mẫu thử thanh màu sắc, đồng hồ tốc độ khung hình, vùng quan tâm (ROI) cho phơi sáng tự động, và các lệnh ioctl riêng cho chip. Các khung hình được chụp bằng CSI.snapshot(), trả về một đối tượng image.Image được hỗ trợ bởi bộ đệm khung hình.
Module này thay thế module kế thừa sensor (vốn cung cấp cùng chức năng nhưng dưới dạng các hàm cấp module gắn với một cảm biến ẩn duy nhất). Code mới nên sử dụng CSI.
Ví dụ sử dụng:
import csi
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000) # skip frames
# Take pictures.
while(True):
csi0.snapshot()
Sử dụng Asyncio¶
Vòng lặp CSI.snapshot() chặn ở trên không hợp tác với vòng lặp sự kiện asyncio -- trong khi snapshot đang chờ khung hình tiếp theo, mọi coroutine khác trong chương trình đều bị đóng băng. Để cho vòng lặp chụp ảnh cùng tồn tại với các công việc đồng thời khác (một UART client, một bộ theo dõi nút nhấn, một tác vụ mạng), hãy bọc CSI trong một bộ điều hợp nhỏ biến snapshot thành một coroutine thân thiện với await bằng cách thăm dò snapshot(blocking=False) và nhường quyền cho vòng lặp sự kiện giữa các lần kiểm tra:
import asyncio
import csi
class AsyncCSI:
def __init__(self, *args, **kwargs):
self._csi = csi.CSI(*args, **kwargs)
def __getattr__(self, name):
return getattr(self._csi, name)
async def snapshot(self):
while True:
img = self._csi.snapshot(blocking=False)
if img is not None:
return img
await asyncio.sleep_ms(0)
__getattr__ chuyển tiếp mọi thuộc tính khác (reset, pixformat, framesize, các nút chỉnh cảm biến) đến CSI bên dưới, vì vậy wrapper có thể thay thế trực tiếp. Lần gọi không chặn đầu tiên cũng khởi động quá trình chụp DMA của camera nếu nó chưa chạy, vì vậy không cần khởi động thêm.
Một vòng lặp chụp ảnh sau đó có thể tích hợp vào một chương trình asyncio lớn hơn như một coroutine thông thường:
async def capture_loop(cam):
while True:
img = await cam.snapshot()
# process img here
async def main():
cam = AsyncCSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
asyncio.create_task(some_other_task())
await capture_loop(cam)
asyncio.run(main())
Cài đặt framebuffers vẫn quan trọng trong trường hợp này -- chế độ đơn bộ đệm khiến snapshot(blocking=False) trả về None cho đến khi khung hình tiếp theo được chụp, trong khi bộ đệm đôi hoặc ba làm giảm điều đó để wrapper thường tìm thấy một khung hình đệm đang chờ ở lần thăm dò đầu tiên. Xem phần hướng dẫn AsyncCSI trong hướng dẫn asyncio để có hướng dẫn đầy đủ.
class CSI -- Giao diện cảm biến camera¶
Lớp CSI được dùng để điều khiển một cảm biến camera.
- class csi.CSI(cid: int = -1, delays: bool = True, fflush: bool = True, stream: bool | None = None)¶
Tạo một đối tượng để giao tiếp với cảm biến camera. Trên các bo mạch có nhiều cảm biến, có thể chọn đối tượng CSI cụ thể bằng cách truyền
cidnhưcsi.LEPTONđể chọn module cảm biến FLIR Lepton. Nếucidlà -1, cảm biến chính sẽ được chọn (thường là module camera màu trên các bo mạch đa cảm biến).Nếu
delayslàFalsethì tất cả các độ trễ ổn định trong driver csi sẽ bị vô hiệu hóa. Theo mặc định, driver cảm biến sẽ trì hoãn sau khi reset / thay đổi chế độ để ngănCSI.snapshottrả về các khung hình bị hỏng. Vô hiệu hóa độ trễ cho phép bạn gộp các cập nhật và áp dụng một độ trễ duy nhất vào cuối trước khi gọiCSI.snapshot.Nếu
fflushlàFalsethì tính năng xả bộ đệm khung hình tự động được đề cập trongCSI.framebufferssẽ bị vô hiệu hóa. Điều này loại bỏ mọi giới hạn thời gian đối với các khung hình trong hàng đợi bộ đệm khung hình.streamchọn xem CSI này có phải là nguồn stream được gửi đến IDE hay không. Nếu làNone(mặc định), CSI sẽ trở thành nguồn stream chỉ khi nó là cảm biến chính (không phải phụ). TruyềnTrueđể buộc CSI này trở thành nguồn stream, hoặc bất kỳ giá trị false nào để giữ nguyên nguồn stream hiện tại.Phương thức¶
- reset(hard: bool = True) None¶
Khởi tạo cảm biến camera. Thực hiện reset phần cứng bằng cách bật tắt GPIO tín hiệu RESET đến module camera nếu
hardlàTrue.hardnên được đặt thành false khi reset các cảm biến camera phụ chia sẻ cùng GPIO tín hiệu RESET với module chính.
- shutdown(enable: bool) None¶
Đưa camera vào chế độ tiết kiệm điện năng thấp hơn sleep (nhưng camera phải được reset khi được đánh thức).
- flush() None¶
Sao chép nội dung bộ đệm khung hình hiện tại vào bản xem trước IDE. Gọi hàm này sau lần
CSI.snapshotcuối cùng nếu tập lệnh kết thúc để IDE hiển thị khung hình cuối cùng.
- snapshot(time: int = -1, frames: int = -1, blocking: bool = True, image: image.Image | None = None) image.Image | None¶
Chụp ảnh bằng camera và trả về đối tượng
image.Image.Nếu
timevà/hoặcframesđược truyền, snapshot sẽ chặn trong sốtimemili giây và/hoặc sốframesđược chụp từ camera. Cả hai đối số có thể được sử dụng cùng lúc. Sau khitimevà/hoặcframesđã trôi qua, snapshot sẽ trả vềNone.blockingcó thể làFalseđể kích hoạt hành vi không chặn, khiến snapshot trả vềNonekhi ảnh tiếp theo từ camera chưa sẵn sàng thay vì chờ.imagecó thể là một đối tượngimage.Imagekhác để cập nhật với ảnh mới được chụp từ camera thay vì trả về đối tượngimage.Imagemới. Nội dung ảnh trước đó bị ghi đè thông qua sao chép sâu.Nếu
CSI.auto_rotationđược bật, phương thức này sẽ trả về mộtimage.Imageđã được xoay sẵn.
- cid() int¶
Trả về ID chip của module camera. So sánh với bất kỳ giá trị nào trong
csi.OV2640,csi.OV5640,csi.OV7670,csi.OV7690,csi.OV7725,csi.OV9650,csi.MT9V022,csi.MT9V024,csi.MT9V032,csi.MT9V034,csi.MT9M114,csi.BOSON320,csi.BOSON640,csi.LEPTON,csi.HM01B0,csi.HM0360,csi.GC2145,csi.GENX320ES,csi.GENX320,csi.PAG7920,csi.PAG7936,csi.PAJ6100,csi.FROGEYE2020, hoặccsi.SOFTCSI.
- readable() bool¶
Trả về
Truenếu có một ảnh sẵn sàng được trả về bởiCSI.snapshot, nghĩa là lần gọi snapshot sẽ không chặn.
- pixformat(pixformat: int | None = None) int | None¶
Đặt định dạng điểm ảnh cho module camera thành một trong
csi.GRAYSCALE,csi.RGB565,csi.BAYER,csi.YUV422, hoặccsi.JPEG(chỉ trên OV2640/OV5640).Trả về định dạng điểm ảnh hiện tại nếu được gọi không có đối số.
- framesize(framesize: int | Tuple[int, int] | None = None) int | None¶
Đặt kích thước khung hình cho module camera thành một trong các hằng số kích thước (ví dụ:
csi.QVGA,csi.VGA,csi.HD, v.v. --- xem phần hằng số).Ngoài ra, bạn có thể truyền kích thước khung hình tùy chỉnh dưới dạng tuple
(w, h). KhiCSI.snapshotđược gọi, kích thước khung hình tùy chỉnh sẽ được đánh giá theo các quy tắc DMA. Nhìn chung, kích thước khung hình cần là bội số của 8 điểm ảnh và/hoặc 16 byte.Trả về kích thước khung hình hiện tại nếu được gọi không có đối số.
- framerate(rate: int | None = None) int | None¶
Đặt tốc độ khung hình tính bằng Hz cho module camera.
Trả về tốc độ khung hình hiện tại nếu được gọi không có đối số.
Ghi chú
CSI.frameratehoạt động bằng cách bỏ qua các khung hình nhận từ module camera để giữ tốc độ khung hình ở mức hoặc dưới mức đã chỉ định. Theo mặc định, camera sẽ chạy ở tốc độ khung hình tối đa. Nếu được triển khai cho cảm biến camera cụ thể,CSI.frameratecũng sẽ giảm tốc độ khung hình nội bộ của cảm biến camera để tiết kiệm điện và cải thiện chất lượng ảnh bằng cách tăng thời gian phơi sáng của cảm biến.CSI.frameratecó thể xung đột vớiCSI.auto_exposuretrên một số camera.
- window(roi: Tuple[int, int] | Tuple[int, int, int, int] | None = None) Tuple[int, int, int, int] | None¶
Đặt độ phân giải của camera thành vùng con của độ phân giải hiện tại.
roilà tuple(x, y, w, h). Bạn cũng có thể truyền(w, h)và cửa sổ sẽ được căn giữa.Trả về tuple
(x, y, w, h)hiện tại nếu được gọi không có đối số.
- gainceiling(gainceiling: int) bool¶
Đặt trần độ khuếch đại của ảnh camera thành một trong 2, 4, 8, 16, 32, 64, hoặc 128.
Trả về
Truekhi thành công vàFalsekhi thất bại.
- brightness(brightness: int) bool¶
Đặt độ sáng ảnh của camera.
Trả về
Truekhi thành công vàFalsekhi thất bại.
- contrast(contrast: int) bool¶
Đặt độ tương phản ảnh của camera.
Trả về
Truekhi thành công vàFalsekhi thất bại.
- saturation(saturation: int) bool¶
Đặt độ bão hòa màu sắc ảnh của camera.
Trả về
Truekhi thành công vàFalsekhi thất bại.
- quality(quality: int) bool¶
Đặt chất lượng nén JPEG của ảnh camera. 0 - 100.
Trả về
Truekhi thành công vàFalsekhi thất bại.Ghi chú
Chỉ dành cho camera OV2640/OV5640.
- colorbar(enable: bool) bool¶
Bật (
True) hoặc tắt (False) chế độ thanh màu. Mặc định là tắt.Trả về
Truekhi thành công vàFalsekhi thất bại.
- auto_gain(enable: bool, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enablebật (True) hoặc tắt (False) điều khiển độ khuếch đại tự động. Camera khởi động với điều khiển độ khuếch đại tự động được bật.Nếu
enablelàFalse, bạn có thể đặt độ khuếch đại cố định tính bằng decibel vớigain_db.Nếu
enablelàTrue, bạn có thể đặt trần độ khuếch đại tối đa tính bằng decibel vớigain_db_ceilingcho thuật toán điều khiển độ khuếch đại tự động.Ghi chú
Bạn cũng cần tắt cân bằng trắng nếu muốn theo dõi màu sắc.
- auto_exposure(enable: bool, exposure_us: int = -1) None¶
enablebật (True) hoặc tắt (False) điều khiển phơi sáng tự động. Camera khởi động với điều khiển phơi sáng tự động được bật.Nếu
enablelàFalse, bạn có thể đặt thời gian phơi sáng cố định tính bằng micro giây vớiexposure_us.Ghi chú
Các thuật toán phơi sáng tự động của camera khá thận trọng về mức độ điều chỉnh giá trị phơi sáng và thường tránh thay đổi giá trị phơi sáng nhiều. Thay vào đó, chúng thay đổi giá trị độ khuếch đại nhiều để đối phó với điều kiện ánh sáng thay đổi.
- auto_whitebal(enable: bool, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enablebật (True) hoặc tắt (False) cân bằng trắng tự động. Camera khởi động với cân bằng trắng tự động được bật.Nếu
enablelàFalse, bạn có thể đặt độ khuếch đại cố định tính bằng decibel cho các kênh đỏ, xanh lá và xanh dương tương ứng vớirgb_gain_db.Ghi chú
Bạn cũng cần tắt điều khiển độ khuếch đại nếu muốn theo dõi màu sắc.
- rgb_gain_db() Tuple[float, float, float]¶
Trả về tuple
(r, g, b)của các giá trị độ khuếch đại đỏ, xanh lá và xanh dương hiện tại của camera tính bằng decibel.
- auto_blc(enable: bool, regs: List[int] | None = None) None¶
Đặt hiệu chỉnh mức đen tự động (BLC) trên camera.
enabletruyềnTruehoặcFalseđể bật hoặc tắt BLC. Thông thường bạn luôn muốn bật tính năng này.regsnếu bị vô hiệu hóa thì bạn có thể đặt thủ công các giá trị thanh ghi BLC từ lần gọi trước đó đếnCSI.blc_regs.
- blc_regs() List[int]¶
Trả về các thanh ghi BLC của cảm biến dưới dạng danh sách số nguyên. Dùng với
CSI.auto_blc.
- hmirror(enable: bool | None = None) bool | None¶
Bật (
True) hoặc tắt (False) chế độ gương ngang. Mặc định là tắt.Trả về cài đặt hiện tại nếu được gọi không có đối số.
- vflip(enable: bool | None = None) bool | None¶
Bật (
True) hoặc tắt (False) chế độ lật dọc. Mặc định là tắt.Trả về cài đặt hiện tại nếu được gọi không có đối số.
- transpose(enable: bool | None = None) bool | None¶
Bật (
True) hoặc tắt (False) chế độ hoán vị. Mặc định là tắt.vflip=False, hmirror=False, transpose=False -> xoay 0 độ
vflip=True, hmirror=False, transpose=True -> xoay 90 độ
vflip=True, hmirror=True, transpose=False -> xoay 180 độ
vflip=False, hmirror=True, transpose=True -> xoay 270 độ
Trả về cài đặt hiện tại nếu được gọi không có đối số.
- auto_rotation(enable: bool | None = None) bool | None¶
Bật (
True) hoặc tắt (False) chế độ xoay tự động. Mặc định là tắt.Trả về cài đặt hiện tại nếu được gọi không có đối số.
Ghi chú
Phương thức này chỉ hoạt động khi OpenMV Cam có
imuđược cài đặt và được bật tự động.
- framebuffers(count: int | None = None) int | None¶
Đặt số lượng bộ đệm khung hình được sử dụng để nhận dữ liệu ảnh. Theo mặc định, OpenMV Cam sẽ cố gắng phân bổ số lượng bộ đệm khung hình tối đa có thể. Việc tái phân bổ xảy ra mỗi khi
CSI.pixformat,CSI.framesize, hoặcCSI.windowđược gọi.countbằng 1 (đơn bộ đệm), 2 (đôi bộ đệm), hoặc 3 (ba bộ đệm) chọn chế độ chụp tương ứng. Truyền 4 hoặc lớn hơn để đưa driver vào chế độ FIFO video nơicountbộ đệm được xếp hàng --- hữu ích cho việc ghi video vào thẻ SD. Khi mất khung hình, tất cả các bộ đệm khung hình ngoại trừ bộ đệm đang hoạt động đều được xóa đểCSI.snapshotluôn trả về khung hình gần nhất.Trả về số lượng hiện tại nếu được gọi không có đối số.
- special_effect(effect: int) bool¶
Đặt hiệu ứng kỹ thuật số đặc biệt (một trong
csi.NORMALhoặccsi.NEGATIVE).Trả về
Truekhi thành công vàFalsekhi thất bại.
- lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrueđể bật,Falseđể tắt.radibán kính số nguyên của các điểm ảnh cần hiệu chỉnh.coefhệ số hiệu chỉnh.Trả về
Truekhi thành công vàFalsekhi thất bại.
- vsync_callback(cb: Callable[[int], None] | None = None) Callable[[int], None] | None¶
Đăng ký hàm gọi lại
cbđể được thực thi (trong ngữ cảnh ngắt) bất cứ khi nào module camera tạo ra một khung hình mới (nhưng trước khi khung hình được nhận).cbnhận một đối số và được truyền trạng thái hiện tại của chân vsync sau khi thay đổi.Trả về hàm gọi lại đã đăng ký nếu được gọi không có đối số. Truyền bất kỳ giá trị không thể gọi nào để xóa hàm gọi lại.
- frame_callback(cb: Callable[[], None] | None = None) Callable[[], None] | None¶
Đăng ký hàm gọi lại
cbđể được thực thi (trong ngữ cảnh ngắt) bất cứ khi nào module camera tạo ra một khung hình mới và khung hình đó sẵn sàng được đọc quaCSI.snapshot.cbkhông nhận đối số. Dùng hàm này để lên lịch đọc khung hình sau vớimicropython.schedule().Trả về hàm gọi lại đã đăng ký nếu được gọi không có đối số. Truyền bất kỳ giá trị không thể gọi nào để xóa hàm gọi lại.
- ioctl(request: int, *args) Any¶
Thực thi một yêu cầu đặc thù của cảm biến.
requestlà một trong các hằng sốIOCTL_*; các đối số vị trí còn lại và giá trị trả về phụ thuộc vào yêu cầu. Các yêu cầu được hỗ trợ được nhóm theo dòng cảm biến bên dưới.Chung (mọi cảm biến):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))Đặt cửa sổ đọc của cảm biến. Cửa sổ nhỏ hơn làm tăng tốc độ khung hình nhưng giảm trường nhìn.
ioctl(IOCTL_GET_READOUT_WINDOW)Trả về cửa sổ đọc hiện tại dưới dạng tuple
(x, y, w, h).ioctl(IOCTL_SET_TRIGGERED_MODE, enable)Bật (
True) hoặc tắt (False) chế độ kích hoạt trên MT9V034.ioctl(IOCTL_GET_TRIGGERED_MODE)Trả về trạng thái chế độ kích hoạt hiện tại dưới dạng
bool.ioctl(IOCTL_SET_FOV_WIDE, enable)Khi là
True, hướng dẫnframesize()tối ưu hóa cho trường nhìn thay vì tốc độ khung hình.ioctl(IOCTL_GET_FOV_WIDE)Trả về trạng thái FOV rộng hiện tại dưới dạng
bool.ioctl(IOCTL_SET_NIGHT_MODE, enable)Bật (
True) hoặc tắt (False) "chế độ ban đêm" ánh sáng thấp của cảm biến. Chỉ dành cho OV7725 và OV5640.ioctl(IOCTL_GET_NIGHT_MODE)Trả về trạng thái chế độ ban đêm hiện tại dưới dạng
bool.ioctl(IOCTL_GET_RGB_STATS)Trả về 4-tuple các thống kê kênh RGB thô
(r, gb, gr, b)được đọc từ cảm biến (thường được dùng để chỉnh cân bằng trắng).
OV5640 FPC -- lấy nét tự động:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)Bắt đầu quét lấy nét tự động trên module OV5640 FPC.
ioctl(IOCTL_PAUSE_AUTO_FOCUS)Tạm dừng quét lấy nét tự động đang diễn ra.
ioctl(IOCTL_RESET_AUTO_FOCUS)Đặt lại vị trí lấy nét tự động về mặc định.
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)Chặn cho đến khi quét lấy nét tự động hiện tại hoàn thành.
timeout_msmặc định là 5000 nếu bị bỏ qua.
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)Trả về chiều rộng ảnh Lepton tính bằng điểm ảnh.
ioctl(IOCTL_LEPTON_GET_HEIGHT)Trả về chiều cao ảnh Lepton tính bằng điểm ảnh.
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)Trả về loại Lepton (đo bức xạ hay không) dưới dạng int.
ioctl(IOCTL_LEPTON_GET_REFRESH)Trả về tốc độ làm mới của Lepton tính bằng Hz.
ioctl(IOCTL_LEPTON_GET_RESOLUTION)Trả về độ phân giải ADC của Lepton tính bằng bit.
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)Chạy lệnh FLIR Lepton SDK.
cmdlà id lệnh 16-bit được định nghĩa bởi SDK.ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)Ghi một thuộc tính Lepton SDK.
attr_idlà id thuộc tính 16-bit;payloadlàbytes/bytearraycó độ dài phải là bội số của 16 bit.ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)Đọc một thuộc tính Lepton SDK.
attr_idlà id thuộc tính 16-bit;wordslà số từ 16-bit cần đọc. Trả vềbytearray.ioctl(IOCTL_LEPTON_GET_FPA_TEMP)Trả về nhiệt độ mảng phẳng tiêu cự (FPA) của Lepton tính bằng độ Celsius.
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)Trả về nhiệt độ phụ của Lepton tính bằng độ Celsius.
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)Chuyển đổi Lepton giữa AGC và đầu ra nhiệt độ trực tiếp.
measurement_enabled=Truebật đầu ra nhiệt độ trực tiếp. Cờ tùy chọnhigh_temp_enabledchọn dải nhiệt độ cao.ioctl(IOCTL_LEPTON_GET_MODE)Trả về 2-tuple
(measurement_enabled, high_temp_enabled).ioctl(IOCTL_LEPTON_SET_RANGE, (min_celsius, max_celsius))Đặt dải nhiệt độ được ánh xạ tới
0..255khi chế độ đo lường được bật.ioctl(IOCTL_LEPTON_GET_RANGE)Trả về dải
(min_celsius, max_celsius)hiện tại.
Himax HM01B0 -- phát hiện chuyển động:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)Bật (
True) hoặc tắt (False) khối phát hiện chuyển động trên cảm biến của HM01B0.ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))Đặt cửa sổ phát hiện chuyển động trên HM01B0.
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)Đặt ngưỡng phát hiện chuyển động (
0--255).ioctl(IOCTL_HIMAX_MD_CLEAR)Xóa chốt ngắt phát hiện chuyển động.
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)Bật (
True) hoặc tắt (False) bộ dao động nội bộ của HM01B0.
Prophesee GENX320 -- cảm biến sự kiện:
ioctl(IOCTL_GENX320_SET_BIASES, preset)Áp dụng preset độ lệch.
presetlà một trong các hằng sốGENX320_BIASES_*.ioctl(IOCTL_GENX320_SET_BIAS, bias, value)Đặt một độ lệch đơn.
biaslà một trong các hằng sốGENX320_BIAS_*;valuelà giá trị nguyên.ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)Cấu hình bộ lọc chống nhấp nháy.
enablelà bool; các đối số tần số tùy chọn đặt dải thông của bộ lọc.ioctl(IOCTL_GENX320_SET_STC, mode)ioctl(IOCTL_GENX320_SET_STC, mode, arg1[, arg2])Cấu hình bộ lọc tương phản không gian-thời gian.
modelà một trong các hằng sốGENX320_STC_*; tối đa hai đối số tiếp theo phụ thuộc vào chế độ.ioctl(IOCTL_GENX320_SET_MODE, mode)ioctl(IOCTL_GENX320_SET_MODE, mode, evt_res)Chuyển đổi cảm biến giữa chế độ khung hình và chế độ sự kiện.
modelà một trong các hằng sốGENX320_MODE_*. Đối với chế độ sự kiện,evt_reslà độ dài trục hàng của bộ đệm sự kiện được truyền đếnIOCTL_GENX320_READ_EVENTS.ioctl(IOCTL_GENX320_READ_EVENTS, buf)Đọc các sự kiện vào
buf, mộtndarrayuint16có hình dạng(EVT_res, 6)trong đóEVT_reslà lũy thừa của hai từ 1024 đến 65536. Các cột là:[0]-- loại sự kiện (PIX_OFF_EVENT/PIX_ON_EVENT/ trigger).[1]-- giây.[2]-- mili giây.[3]-- micro giây.[4]-- tọa độx.[5]-- tọa độy.
Trả về số lượng sự kiện đã ghi.
ioctl(IOCTL_GENX320_READ_EVENTS_RAW)Trả về một
image.Imagechứa khung sự kiện thô từ GENX320.ioctl(IOCTL_GENX320_CALIBRATE, iterations, sigma)Tắt các điểm ảnh có nhiễu vượt quá
sigmađộ lệch chuẩn so với phân phối chuẩn.iterationslà số nguyên lần hiệu chỉnh. Trả về số điểm ảnh bị vô hiệu hóa.
- color_palette(palette: int | None = None) int | None¶
Đặt bảng màu để sử dụng cho các mục đích như chuyển đổi thang xám FLIR Lepton sang RGB565 hoặc trực quan hóa sự kiện GENX320. Một trong
image.PALETTE_RAINBOW,image.PALETTE_IRONBOW, và (khi được hỗ trợ)image.PALETTE_DEPTH,image.PALETTE_EVT_DARK, hoặcimage.PALETTE_EVT_LIGHT.Trả về cài đặt hiện tại nếu được gọi không có đối số.
Hàm¶
Hằng số¶
- csi.BINARY: int¶
Định dạng điểm ảnh BINARY (bitmap). Mỗi điểm ảnh là 1-bit. Hữu ích để lưu trữ mặt nạ; có thể dùng với
image.Image().
- csi.RGB565: int¶
Định dạng điểm ảnh RGB565. Mỗi điểm ảnh là 16-bit (5-bit đỏ, 6-bit xanh lá, 5-bit xanh dương).
- csi.YUV422: int¶
Định dạng điểm ảnh YUV422. Mỗi điểm ảnh được lưu trữ dưới dạng giá trị Y 8-bit thang xám theo sau là các giá trị màu U/V 8-bit xen kẽ được chia sẻ giữa hai giá trị Y (Y1, U, Y2, V, ...). Chỉ một số phương thức xử lý ảnh hoạt động với YUV422.
- csi.JPEG: int¶
Chế độ JPEG. Module camera xuất ra ảnh JPEG nén. Dùng
CSI.qualityđể kiểm soát chất lượng JPEG. Chỉ hoạt động với camera OV2640/OV5640.
- csi.NORMAL: int¶
Chế độ thông thường cho
CSI.special_effect.
- csi.NEGATIVE: int¶
Chế độ âm bản cho
CSI.special_effect.
- csi.IOCTL_SET_FOV_WIDE: int¶
Bật
CSI.framesizeđể tối ưu hóa trường nhìn so với FPS. XemCSI.ioctl.
- csi.IOCTL_GET_FOV_WIDE: int¶
Trả về xem
CSI.framesizecó đang tối ưu hóa trường nhìn so với FPS hay không. XemCSI.ioctl.
- csi.IOCTL_TRIGGER_AUTO_FOCUS: int¶
Kích hoạt lấy nét tự động trên module camera OV5640 FPC. Xem
CSI.ioctl.
- csi.IOCTL_PAUSE_AUTO_FOCUS: int¶
Tạm dừng lấy nét tự động (khi đang chạy) cho module camera OV5640 FPC. Xem
CSI.ioctl.
- csi.IOCTL_RESET_AUTO_FOCUS: int¶
Đặt lại lấy nét tự động về mặc định cho module camera OV5640 FPC. Xem
CSI.ioctl.
- csi.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
Chờ lấy nét tự động hoàn thành trên module camera OV5640 FPC. Xem
CSI.ioctl.
- csi.IOCTL_SET_NIGHT_MODE: int¶
Bật hoặc tắt chế độ ban đêm. Giảm tốc độ khung hình để tăng thời gian phơi sáng một cách động. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_WIDTH: int¶
Trả về chiều rộng độ phân giải ảnh FLIR Lepton tính bằng điểm ảnh. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_HEIGHT: int¶
Trả về chiều cao độ phân giải ảnh FLIR Lepton tính bằng điểm ảnh. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_REFRESH: int¶
Trả về tốc độ làm mới của FLIR Lepton tính bằng Hz. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_RESOLUTION: int¶
Trả về độ phân giải ADC của FLIR Lepton tính bằng bit. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_FPA_TEMP: int¶
Lấy nhiệt độ FPA của FLIR Lepton tính bằng Celsius. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_AUX_TEMP: int¶
Lấy nhiệt độ AUX của FLIR Lepton tính bằng Celsius. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_MODE: int¶
Đặt driver FLIR Lepton vào chế độ trong đó mỗi điểm ảnh là một giá trị nhiệt độ. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_GET_MODE: int¶
Trả về xem chế độ đo lường có được bật cho cảm biến FLIR Lepton hay không. Xem
CSI.ioctl.
- csi.IOCTL_LEPTON_SET_RANGE: int¶
Đặt dải nhiệt độ được ánh xạ tới các giá trị điểm ảnh trong chế độ đo lường. Xem
CSI.ioctl.
- csi.IOCTL_GENX320_SET_BIASES: int¶
Đặt các độ lệch cảm biến GENX320 thành một trong các preset
GENX320_BIASES_*. XemCSI.ioctl. SauCSI.reset, driver áp dụngcsi.GENX320_BIASES_LOW_NOISE, không phảicsi.GENX320_BIASES_DEFAULT--- dùng ioctl này để chuyển sang preset khác khi ứng dụng cần độ nhạy hoặc băng thông cao hơn.
- csi.GENX320_BIASES_DEFAULT: int¶
Giá trị mặc định theo bảng dữ liệu GenX320 --- độ nhạy, nhiễu và băng thông cân bằng cho các cảnh thông thường.
- csi.GENX320_BIASES_LOW_LIGHT: int¶
Được điều chỉnh cho điều kiện ánh sáng thấp --- cả hai ngưỡng tương phản đều được nới lỏng để tăng độ nhạy, FO giảm, HPF bị tắt để các thay đổi độ sáng chậm vẫn được ghi nhận.
- csi.GENX320_BIASES_ACTIVE_MARKER: int¶
Được điều chỉnh để theo dõi đèn LED nhấp nháy có tương phản cao (các điểm đánh dấu hoạt động) --- ngưỡng tương phản được nâng cao để chỉ các chuyển tiếp sắc nét mới kích hoạt, FO và HPF được tăng cao để tối đa băng thông và loại bỏ độ trôi môi trường chậm, REFR=0 để mọi cạnh nhấp nháy đều được ghi lại.
- csi.GENX320_BIASES_LOW_NOISE: int¶
Mặc định driver --- độ nhạy thấp hơn
DEFAULT(ngưỡng tương phản được nâng cao) và FO thấp hơn để giảm hoạt động nhiễu nền. Tốt nhất cho các cảnh tĩnh hoặc chậm nơi các sự kiện sai sẽ chiếm ưu thế.
- csi.GENX320_BIASES_HIGH_SPEED: int¶
Được điều chỉnh cho các cảnh chuyển động nhanh --- FO cao hơn để băng thông điểm ảnh rộng hơn, HPF cao hơn để loại bỏ các thay đổi chậm, REFR cao hơn cho thời gian chết dài hơn sau mỗi sự kiện để việc đọc không bị bão hòa.
- csi.IOCTL_GENX320_SET_BIAS: int¶
Đặt một độ lệch cảm biến GENX320 đơn lẻ thành giá trị DAC. Truyền một hằng số
GENX320_BIAS_*(csi.GENX320_BIAS_DIFF_OFF,csi.GENX320_BIAS_DIFF_ON,csi.GENX320_BIAS_FO,csi.GENX320_BIAS_HPF, hoặccsi.GENX320_BIAS_REFR) và một giá trị DAC nguyên. Mỗi độ lệch là độc lập --- gọi ioctl này nhiều lần để chỉ điều chỉnh các độ lệch bạn cần sau khi áp dụng preset. XemCSI.ioctl.
- csi.GENX320_BIAS_DIFF_OFF: int¶
Ngưỡng tương phản bộ so sánh âm --- kiểm soát mức độ tối của một điểm ảnh trước khi
csi.PIX_OFF_EVENTkích hoạt. Giá trị thấp hơn = nhạy hơn (nhiều sự kiện hơn).
- csi.GENX320_BIAS_DIFF_ON: int¶
Ngưỡng tương phản bộ so sánh dương --- kiểm soát mức độ sáng của một điểm ảnh trước khi
csi.PIX_ON_EVENTkích hoạt. Giá trị thấp hơn = nhạy hơn (nhiều sự kiện hơn).
- csi.GENX320_BIAS_FO: int¶
Tần số cắt bộ lọc thông thấp của điểm ảnh --- đánh đổi giữa băng thông điểm ảnh (tốc độ/độ trễ) và hoạt động nhiễu nền. Giá trị cao hơn = phản hồi điểm ảnh nhanh hơn, nhiều nhiễu hơn.
- csi.GENX320_BIAS_HPF: int¶
Tần số cắt bộ lọc thông cao của điểm ảnh --- loại bỏ các thay đổi độ sáng chậm. Giá trị cao hơn = lọc bỏ các thay đổi chậm hơn (chỉ các chuyển tiếp nhanh mới được ghi nhận).
- csi.GENX320_BIAS_REFR: int¶
Giai đoạn trơ của điểm ảnh --- thời gian chết sau khi điểm ảnh phát ra sự kiện mà trong đó nó không thể kích hoạt lại. Giá trị cao hơn = thời gian chết dài hơn, ít sự kiện hơn từ điểm ảnh bận.
- csi.IOCTL_GENX320_SET_AFK: int¶
Đặt bộ lọc chống nhấp nháy (AFK) của GENX320, loại bỏ các sự kiện từ các điểm ảnh chuyển đổi ở một dải tần số tuần hoàn (đèn huỳnh quang, màn hình LED, v.v.). Truyền
enable(1 để bật, 0 để tắt) và khi bật, các cạnh dải tính bằng hertz:(enable, freq_low_hz, freq_high_hz). XemCSI.ioctl.
- csi.IOCTL_GENX320_SET_STC: int¶
Đặt chế độ bộ lọc tương phản không gian-thời gian (STC) của GENX320. Truyền một hằng số
GENX320_STC_*(csi.GENX320_STC_DISABLE,csi.GENX320_STC_ONLY,csi.GENX320_STC_TRAIL_ONLY,csi.GENX320_STC_TRAIL) theo sau là (các) ngưỡng mà chế độ yêu cầu (tính bằng mili giây). XemCSI.ioctl.
- csi.GENX320_STC_ONLY: int¶
Giữ sự kiện thứ hai của một loạt; loại bỏ sự kiện đầu tiên và bất kỳ sự kiện nào sau đó. Nhận một tham số,
stc_thresholdtính bằng mili giây --- các sự kiện trong cửa sổ đó của một sự kiện trước đó trên cùng điểm ảnh được coi là một phần của cùng loạt.
- csi.GENX320_STC_TRAIL_ONLY: int¶
Giữ sự kiện đầu tiên của một loạt; loại bỏ các sự kiện tiếp theo trên cùng điểm ảnh cho đến khi
trail_thresholdđã trôi qua. Nhận một tham số,trail_thresholdtính bằng mili giây.
- csi.GENX320_STC_TRAIL: int¶
Giữ sự kiện đầu tiên của một loạt cộng với các cạnh tiếp theo --- kết hợp
csi.GENX320_STC_ONLYvàcsi.GENX320_STC_TRAIL_ONLY. Nhận hai tham số,stc_thresholdvàtrail_threshold(cả hai tính bằng ms); cảm biến yêu cầu hai giá trị này duy trì tỷ lệ khoảng 13:1.
- csi.IOCTL_GENX320_SET_MODE: int¶
Đặt chế độ hoạt động của GENX320. Truyền
csi.GENX320_MODE_HISTOcho biểu đồ tần suất sự kiện trên chip (cam hoạt động như camera thang xám thông thường ở tốc độ khung hình đã cấu hình) hoặccsi.GENX320_MODE_EVENTtheo sau là độ dài trục hàng củandarraysự kiện (lũy thừa của hai từ 1024 đến 65536) để stream sự kiện thô. XemCSI.ioctl.
- csi.GENX320_MODE_HISTO: int¶
Chế độ biểu đồ tần suất --- các sự kiện được tích lũy trên chip vào các bin theo từng điểm ảnh và được báo cáo dưới dạng khung hình thang xám 320x320 ở tốc độ đã cấu hình (~20-350 FPS). Cam trông giống như một camera thông thường, vì vậy tất cả các quy trình xử lý ảnh tiêu chuẩn đều hoạt động trực tiếp.
- csi.GENX320_MODE_EVENT: int¶
Chế độ sự kiện --- bỏ qua biểu đồ tần suất trên chip và stream các sự kiện thô vào
ndarraynumpy với dấu thời gian micro giây, cho các ứng dụng cần đầy đủ chi tiết thời gian thay vì khung hình đã được phân bin sẵn.
- csi.IOCTL_GENX320_READ_EVENTS: int¶
Đọc các sự kiện thô vào
ndarrayuint16 có hình dạng(EVT_res, 6)(vớiEVT_reskhớp với kích thước bộ đệm được truyền đếncsi.IOCTL_GENX320_SET_MODE). Các cột là[0]loại sự kiện (csi.PIX_OFF_EVENT,csi.PIX_ON_EVENT,csi.EXT_TRIGGER_RISING/FALLING,csi.RST_TRIGGER_RISING/FALLING),[1]dấu thời gian giây,[2]mili giây,[3]micro giây,[4]tọa độ X (0-319),[5]tọa độ Y (0-319). Trả về số lượng sự kiện được ghi vào bộ đệm, để các hàng cũ hơn ngoài số đếm đó không bị chạm vào. XemCSI.ioctl.
- csi.IOCTL_GENX320_CALIBRATE: int¶
Tự động vô hiệu hóa các điểm ảnh nóng --- các điểm ảnh kích hoạt bừa bãi ngay cả trên một cảnh tĩnh. Driver xây dựng số lần nhấn theo từng điểm ảnh 320x320, tính toán giá trị trung bình và độ lệch chuẩn, và vô hiệu hóa bất kỳ điểm ảnh nào có số lần vượt quá
mean + sigma * stddev. Truyền ngân sách đếm sự kiện (số sự kiện cần tính trước khi tính toán thống kê --- cao hơn = ước tính đáng tin cậy hơn, chậm hơn; ~10000 là mặc định tốt) và một float sigma (thấp hơn = mạnh hơn, mặc định ~0.5). Trả về số điểm ảnh bị vô hiệu hóa. Hãy hướng cam vào một cảnh tĩnh trước để các sự kiện do chuyển động không bị tính vào các điểm ảnh thực ra là bình thường. XemCSI.ioctl.
- csi.IOCTL_GENX320_READ_EVENTS_RAW: int¶
Trả về
image.Imagekhung sự kiện thô từ GENX320, với các sự kiện vẫn ở định dạng mã hóa gốc của chip --- hữu ích nếu bạn muốn chuyển stream thô đến PC để giải mã ngoại tuyến thay vì xử lý trên cam. XemCSI.ioctl.
- csi.PIX_OFF_EVENT: int¶
Loại sự kiện GENX320 (cột
[0]) --- một điểm ảnh phát hiện giảm độ sáng (ngưỡng tương phản âm bị vượt qua). Các cột[4]/[5]mang X/Y của điểm ảnh.
- csi.PIX_ON_EVENT: int¶
Loại sự kiện GENX320 (cột
[0]) --- một điểm ảnh phát hiện tăng độ sáng (ngưỡng tương phản dương bị vượt qua). Các cột[4]/[5]mang X/Y của điểm ảnh.
- csi.RST_TRIGGER_RISING: int¶
Loại sự kiện GENX320 (cột
[0]) --- trigger reset điểm ảnh, cạnh lên. X/Y không được sử dụng. Hiện không được tạo ra bởi firmware.
- csi.RST_TRIGGER_FALLING: int¶
Loại sự kiện GENX320 (cột
[0]) --- trigger reset điểm ảnh, cạnh xuống. X/Y không được sử dụng. Hiện không được tạo ra bởi firmware.