sensor --- 相機感測器¶
在 4.5 版之後被棄用: sensor 模組已棄用。請改用新的 csi 模組(參見 csi --- 相機感測器)。本模組不會再新增任何功能,並且可能在未來的版本中移除。
sensor 模組是 OpenMV Cam 上主相機感測器的舊版模組層級介面。每個呼叫都是對單一隱藏的 CSI 實例進行操作的自由函式,這限制了對具有多個相機的開發板的支援。它被保留以維持與舊版 OpenMV 指令碼的向後相容性;新程式碼應改用物件導向的 csi 模組。
函式名稱沿用較舊的 set_pixformat / set_framesize 風格。每個函式都與 csi.CSI 上的方法一對一對應;完整的功能集與各參數說明請參見 csi 模組。
使用範例:
import sensor
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
while True:
img = sensor.snapshot()
函式¶
- sensor.snapshot() image.Image¶
使用相機拍攝一張照片並回傳一個
image.Image物件。若已啟用
sensor.set_auto_rotation(),此方法會回傳一個已旋轉的全新image.Image物件。
- sensor.skip_frames(n: int | None = None, time: int = 300) None¶
跳過
n個影格或time毫秒(以指定者為準),以便在變更相機設定後讓相機影像穩定下來。若既未指定
n也未指定time,此方法會跳過影格 300 毫秒。若兩者皆指定,此方法會跳過
n個影格,但會在time毫秒後逾時。
- sensor.get_fb() image.Image | None¶
回傳先前呼叫
sensor.snapshot()所回傳的影像物件。若先前未曾呼叫sensor.snapshot(),則回傳None。
- sensor.get_frame_available() bool¶
若有可透過呼叫
sensor.snapshot()讀取的影格可用,則回傳True。
- sensor.alloc_extra_fb(width: int, height: int, pixformat: int) image.Image¶
在 4.5 版之後被棄用: 此函式已棄用,並將引發
OSError。請改用新的csi模組。
- sensor.set_pixformat(pixformat: int) None¶
設定相機模組的像素格式。
pixformat為下列其中之一:sensor.JPEG(僅適用於 OV2640/OV5640)
- sensor.set_windowing(roi: Tuple[int, int] | Tuple[int, int, int, int] | List[int]) None¶
將相機的解析度設定為目前解析度內的子解析度。
roi是一個矩形元組/串列(x, y, w, h)。您也可以傳入(w, h),則roi會以影格為中心。這些引數也可以拆開作為位置整數傳入。
- sensor.get_windowing() Tuple[int, int, int, int]¶
回傳先前以
sensor.set_windowing()設定的roi元組(x, y, w, h)。
- sensor.set_quality(quality: int) bool¶
設定相機影像的 JPEG 壓縮品質。有效範圍為
0至100。成功時回傳True。僅適用於 OV2640/OV5640 相機。
- sensor.set_auto_gain(enable: int, gain_db: float | None = None, gain_db_ceiling: float | None = None) None¶
enable開啟(1)或關閉(0)自動增益控制。若
enable為0,您可以透過gain_db設定固定的增益(以分貝為單位)。若
enable為非零值,您可以透過gain_db_ceiling為自動增益控制演算法設定最大增益上限(以分貝為單位)。gain_db與gain_db_ceiling為僅限關鍵字引數。
- sensor.set_auto_exposure(enable: int, exposure_us: int = -1) None¶
enable開啟(1)或關閉(0)自動曝光控制。若
enable為0,您可以透過exposure_us設定固定的曝光時間(以微秒為單位)。exposure_us為僅限關鍵字引數。
- sensor.set_auto_whitebal(enable: int, rgb_gain_db: Tuple[float, float, float] | None = None) None¶
enable開啟(1)或關閉(0)自動白平衡。若
enable為0,您可以透過rgb_gain_db分別為紅、綠、藍通道設定固定的增益(以分貝為單位)。rgb_gain_db為僅限關鍵字引數。
- sensor.set_auto_blc(enable: int, regs: List[int] | None = None) None¶
設定相機上的自動黑階校正(BLC)控制。
enable為1表示啟用,0表示停用。regs若停用時,您可以透過先前從sensor.get_blc_regs()讀取的值手動設定 BLC 暫存器值。串列長度必須與感測器的 BLC 暫存器數量相符。
- sensor.get_blc_regs() List[int]¶
以整數串列回傳感測器 BLC 暫存器。供
sensor.set_auto_blc()使用。
- sensor.set_transpose(enable: bool) None¶
開啟(
True)或關閉(False)轉置模式。預設為關閉。vflip=False, hmirror=False, transpose=False -> 旋轉 0 度
vflip=True, hmirror=False, transpose=True -> 旋轉 90 度
vflip=True, hmirror=True, transpose=False -> 旋轉 180 度
vflip=False, hmirror=True, transpose=True -> 旋轉 270 度
- sensor.set_auto_rotation(enable: bool) None¶
開啟(
True)或關閉(False)自動旋轉模式。預設為關閉。僅當 OpenMV Cam 安裝了imu時才有效。
- sensor.set_framebuffers(count: int) None¶
設定用於接收影像資料的影格緩衝區數量。
count可以是1(單緩衝)、2(雙緩衝)、3(三緩衝),或4以上以使感測器驅動程式進入視訊 FIFO 模式,此時接收到的影格會儲存在一個由count個緩衝區組成的 FIFO 中。
- sensor.disable_delays(disable: bool | None = None) bool | None¶
若
disable為True,則停用感測器模組中所有的穩定時間延遲。若不帶引數呼叫,當延遲被停用時回傳
True。
- sensor.disable_full_flush(disable: bool | None = None) bool | None¶
若
disable為True,則停用掉格時的自動影格緩衝區清除。若不帶引數呼叫,當自動清除被停用時回傳
True。
- sensor.set_special_effect(sde: int) bool¶
設定感測器上的特殊數位效果(SDE)。
sde為sensor.NORMAL或sensor.NEGATIVE其中之一。成功時回傳True。
- sensor.set_lens_correction(enable: bool, radi: int, coef: int) bool¶
enableTrue表示啟用,False表示停用。radi為要校正的像素半徑(整數)。coef為校正強度。成功時回傳
True。
- sensor.set_vsync_callback(cb: Callable[[int], None] | None) None¶
註冊回呼函式
cb,使其在相機模組產生新影格時(但在接收該影格之前)於中斷情境中執行。cb接受一個引數:vsync 接腳變更後的目前狀態。傳入不可呼叫的值(例如
None)以取消註冊。
- sensor.set_frame_callback(cb: Callable[[], None] | None) None¶
註冊回呼函式
cb,使其在相機模組產生新影格且該影格已可透過sensor.snapshot()讀取時,於中斷情境中執行。cb不接受任何引數。傳入不可呼叫的值(例如
None)以取消註冊。
- sensor.ioctl(request: int, *args: Any) Any¶
執行特定於感測器的請求。
request為IOCTL_*常數之一;其餘的位置引數與回傳值取決於該請求。支援的請求依感測器系列分組於下方。通用(任何感測器):
ioctl(IOCTL_SET_READOUT_WINDOW, (x, y, w, h))ioctl(IOCTL_SET_READOUT_WINDOW, (w, h))設定感測器讀取視窗。較小的視窗會以視野為代價提高影格速率。
ioctl(IOCTL_GET_READOUT_WINDOW)以
(x, y, w, h)元組回傳目前的讀取視窗。ioctl(IOCTL_SET_TRIGGERED_MODE, enable)啟用(
True)或停用(False)MT9V034 上的觸發模式。ioctl(IOCTL_GET_TRIGGERED_MODE)以
bool回傳目前的觸發模式狀態。ioctl(IOCTL_SET_FOV_WIDE, enable)當為
True時,指示set_framesize()針對視野而非影格速率進行最佳化。ioctl(IOCTL_GET_FOV_WIDE)以
bool回傳目前的寬視野狀態。ioctl(IOCTL_SET_NIGHT_MODE, enable)啟用(
True)或停用(False)感測器的低光「夜間模式」。僅限 OV7725 與 OV5640。ioctl(IOCTL_GET_NIGHT_MODE)以
bool回傳目前的夜間模式狀態。ioctl(IOCTL_GET_RGB_STATS)回傳從感測器讀取的原始 RGB 通道統計資料
(r, gb, gr, b)四元組(通常用於白平衡調校)。
OV5640 FPC -- 自動對焦:
ioctl(IOCTL_TRIGGER_AUTO_FOCUS)在 OV5640 FPC 模組上啟動一次自動對焦掃描。
ioctl(IOCTL_PAUSE_AUTO_FOCUS)暫停進行中的自動對焦掃描。
ioctl(IOCTL_RESET_AUTO_FOCUS)將自動對焦位置重設為預設值。
ioctl(IOCTL_WAIT_ON_AUTO_FOCUS)ioctl(IOCTL_WAIT_ON_AUTO_FOCUS, timeout_ms)阻塞直到目前的自動對焦掃描完成。若省略
timeout_ms,則預設為 5000。
FLIR Lepton:
ioctl(IOCTL_LEPTON_GET_WIDTH)以像素為單位回傳 Lepton 影像寬度。
ioctl(IOCTL_LEPTON_GET_HEIGHT)以像素為單位回傳 Lepton 影像高度。
ioctl(IOCTL_LEPTON_GET_RADIOMETRY)以整數回傳 Lepton 的類型(是否為輻射測量型)。
ioctl(IOCTL_LEPTON_GET_REFRESH)以 Hz 為單位回傳 Lepton 的更新率。
ioctl(IOCTL_LEPTON_GET_RESOLUTION)以位元為單位回傳 Lepton 的 ADC 解析度。
ioctl(IOCTL_LEPTON_RUN_COMMAND, cmd)執行一個 FLIR Lepton SDK 命令。
cmd是由 SDK 定義的 16 位元命令 ID。ioctl(IOCTL_LEPTON_SET_ATTRIBUTE, attr_id, payload)寫入一個 Lepton SDK 屬性。
attr_id是 16 位元屬性 ID;payload是一個bytes/bytearray,其長度必須為 16 位元的倍數。ioctl(IOCTL_LEPTON_GET_ATTRIBUTE, attr_id, words)讀取一個 Lepton SDK 屬性。
attr_id是 16 位元屬性 ID;words是要讀取的 16 位元字組數量。回傳一個bytearray。ioctl(IOCTL_LEPTON_GET_FPA_TEMP)以攝氏度回傳 Lepton 焦平面陣列溫度。
ioctl(IOCTL_LEPTON_GET_AUX_TEMP)以攝氏度回傳 Lepton 輔助溫度。
ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled)ioctl(IOCTL_LEPTON_SET_MODE, measurement_enabled, high_temp_enabled)在 AGC 與直接溫度輸出之間切換 Lepton。
measurement_enabled=True會啟用直接溫度輸出。可選的high_temp_enabled旗標會選擇高溫範圍。ioctl(IOCTL_LEPTON_GET_MODE)回傳一個 2 元組
(measurement_enabled, high_temp_enabled)。ioctl(IOCTL_LEPTON_SET_RANGE, min_temp_c, max_temp_c)設定啟用測量模式時對應到
0..255的溫度範圍。ioctl(IOCTL_LEPTON_GET_RANGE)回傳目前的
(min_celsius, max_celsius)範圍。
Himax HM01B0 -- 移動偵測:
ioctl(IOCTL_HIMAX_MD_ENABLE, enable)啟用(
True)或停用(False)HM01B0 的感測器內移動偵測區塊。ioctl(IOCTL_HIMAX_MD_WINDOW, (x, y, w, h))ioctl(IOCTL_HIMAX_MD_WINDOW, (w, h))設定 HM01B0 上的移動偵測視窗。
ioctl(IOCTL_HIMAX_MD_THRESHOLD, threshold)設定移動偵測閾值(
0--255)。ioctl(IOCTL_HIMAX_MD_CLEAR)清除移動偵測中斷鎖存。
ioctl(IOCTL_HIMAX_OSC_ENABLE, enable)啟用(
True)或停用(False)HM01B0 的內部振盪器。
Prophesee GENX320 -- 事件感測器:
ioctl(IOCTL_GENX320_SET_BIASES, preset)套用一個偏壓預設集。
preset為GENX320_BIASES_*常數之一。ioctl(IOCTL_GENX320_SET_BIAS, bias, value)設定單一偏壓。
bias為GENX320_BIAS_*常數之一;value為整數設定值。ioctl(IOCTL_GENX320_SET_AFK, enable)ioctl(IOCTL_GENX320_SET_AFK, enable, freq_low_hz, freq_high_hz)設定抗閃爍濾波器。
enable為布林值;可選的頻率引數會設定濾波器通帶。
- sensor.set_color_palette(palette: int) None¶
設定 FLIR Lepton(及類似裝置)灰階轉 RGB565 的色彩調色盤。
palette為image.PALETTE_RAINBOW、image.PALETTE_IRONBOW、image.PALETTE_DEPTH、image.PALETTE_EVT_DARK或image.PALETTE_EVT_LIGHT其中之一。
常數¶
- sensor.OV2640: int¶
對於 OV2640 相機,
sensor.get_id()會回傳此值。
- sensor.OV5640: int¶
對於 OV5640 相機,
sensor.get_id()會回傳此值。
- sensor.OV7670: int¶
對於 OV7670 相機,
sensor.get_id()會回傳此值。
- sensor.OV7690: int¶
對於 OV7690 相機,
sensor.get_id()會回傳此值。
- sensor.OV7725: int¶
對於 OV7725 相機,
sensor.get_id()會回傳此值。
- sensor.OV9650: int¶
對於 OV9650 相機,
sensor.get_id()會回傳此值。
- sensor.MT9V022: int¶
對於 MT9V022 相機,
sensor.get_id()會回傳此值。
- sensor.MT9V024: int¶
對於 MT9V024 相機,
sensor.get_id()會回傳此值。
- sensor.MT9V032: int¶
對於 MT9V032 相機,
sensor.get_id()會回傳此值。
- sensor.MT9V034: int¶
對於 MT9V034 相機,
sensor.get_id()會回傳此值。
- sensor.MT9M114: int¶
對於 MT9M114 相機,
sensor.get_id()會回傳此值。
- sensor.BOSON320: int¶
對於 BOSON 320x256 相機,
sensor.get_id()會回傳此值。
- sensor.BOSON640: int¶
對於 BOSON 640x512 相機,
sensor.get_id()會回傳此值。
- sensor.LEPTON: int¶
對於 LEPTON1/2/3 相機,
sensor.get_id()會回傳此值。
- sensor.HM01B0: int¶
對於 HM01B0 相機,
sensor.get_id()會回傳此值。
- sensor.HM0360: int¶
對於 HM0360 相機,
sensor.get_id()會回傳此值。
- sensor.GC2145: int¶
對於 GC2145 相機,
sensor.get_id()會回傳此值。
- sensor.GENX320ES: int¶
對於 GENX320(工程樣品)相機,
sensor.get_id()會回傳此值。
- sensor.GENX320: int¶
對於 GENX320 相機,
sensor.get_id()會回傳此值。
- sensor.PAG7920: int¶
對於 PAG7920 相機,
sensor.get_id()會回傳此值。
- sensor.PAG7936: int¶
對於 PAG7936 相機,
sensor.get_id()會回傳此值。
- sensor.PAJ6100: int¶
對於 PAJ6100 相機,
sensor.get_id()會回傳此值。
- sensor.FROGEYE2020: int¶
對於 FROGEYE2020 相機,
sensor.get_id()會回傳此值。
- sensor.NORMAL: int¶
傳遞給
sensor.set_special_effect()以取得正常(無 SDE)輸出。
- sensor.NEGATIVE: int¶
傳遞給
sensor.set_special_effect()以取得負片影像輸出。
- sensor.B64X32: int¶
64x32 解析度。供
Image.find_displacement()及其他以 FFT 為基礎的演算法使用。
- sensor.B64X64: int¶
64x64 解析度。供
Image.find_displacement()及其他以 FFT 為基礎的演算法使用。
- sensor.B128X64: int¶
128x64 解析度。供
Image.find_displacement()及其他以 FFT 為基礎的演算法使用。
- sensor.B128X128: int¶
128x128 解析度。供
Image.find_displacement()及其他以 FFT 為基礎的演算法使用。
- sensor.IOCTL_SET_READOUT_WINDOW: int¶
設定感測器讀取視窗。請參見
sensor.ioctl()。
- sensor.IOCTL_GET_READOUT_WINDOW: int¶
取得感測器讀取視窗。請參見
sensor.ioctl()。
- sensor.IOCTL_SET_TRIGGERED_MODE: int¶
設定觸發模式(例如供 MT9V034 使用)。請參見
sensor.ioctl()。
- sensor.IOCTL_GET_TRIGGERED_MODE: int¶
取得目前的觸發模式狀態。請參見
sensor.ioctl()。
- sensor.IOCTL_SET_FOV_WIDE: int¶
讓
sensor.set_framesize()針對視野而非 FPS 進行最佳化。請參見sensor.ioctl()。
- sensor.IOCTL_GET_FOV_WIDE: int¶
取得目前以視野優先於 FPS 的最佳化狀態。請參見
sensor.ioctl()。
- sensor.IOCTL_TRIGGER_AUTO_FOCUS: int¶
在 OV5640 FPC 相機模組上觸發自動對焦。請參見
sensor.ioctl()。
- sensor.IOCTL_PAUSE_AUTO_FOCUS: int¶
在 OV5640 FPC 相機模組上暫停自動對焦。請參見
sensor.ioctl()。
- sensor.IOCTL_RESET_AUTO_FOCUS: int¶
在 OV5640 FPC 相機模組上重設自動對焦。請參見
sensor.ioctl()。
- sensor.IOCTL_WAIT_ON_AUTO_FOCUS: int¶
在 OV5640 FPC 相機模組上等待自動對焦完成。請參見
sensor.ioctl()。
- sensor.IOCTL_SET_NIGHT_MODE: int¶
啟用/停用感測器上的夜間模式。請參見
sensor.ioctl()。
- sensor.IOCTL_GET_NIGHT_MODE: int¶
取得目前的夜間模式狀態。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_WIDTH: int¶
以像素為單位取得 FLIR Lepton 影像寬度。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_HEIGHT: int¶
以像素為單位取得 FLIR Lepton 影像高度。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RADIOMETRY: int¶
取得 FLIR Lepton 類型(是否為輻射測量型)。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_REFRESH: int¶
以 Hz 為單位取得 FLIR Lepton 更新率。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RESOLUTION: int¶
以位元為單位取得 FLIR Lepton ADC 解析度。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_RUN_COMMAND: int¶
執行一個 16 位元 FLIR Lepton SDK 命令。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_ATTRIBUTE: int¶
設定一個 FLIR Lepton 屬性。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_ATTRIBUTE: int¶
取得一個 FLIR Lepton 屬性。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_FPA_TEMP: int¶
以攝氏度取得 FLIR Lepton FPA 溫度。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_AUX_TEMP: int¶
以攝氏度取得 FLIR Lepton AUX 溫度。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_MODE: int¶
設定 FLIR Lepton 測量模式。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_MODE: int¶
取得 FLIR Lepton 測量模式狀態。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_SET_RANGE: int¶
設定 FLIR Lepton 測量模式的溫度範圍。請參見
sensor.ioctl()。
- sensor.IOCTL_LEPTON_GET_RANGE: int¶
取得 FLIR Lepton 測量模式的溫度範圍。請參見
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_ENABLE: int¶
啟用/停用 HM01B0 移動偵測。請參見
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_WINDOW: int¶
設定 HM01B0 移動偵測視窗。請參見
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_THRESHOLD: int¶
設定 HM01B0 移動偵測閾值。請參見
sensor.ioctl()。
- sensor.IOCTL_HIMAX_MD_CLEAR: int¶
清除 HM01B0 移動偵測中斷。請參見
sensor.ioctl()。
- sensor.IOCTL_HIMAX_OSC_ENABLE: int¶
啟用/停用 HM01B0 內部振盪器。請參見
sensor.ioctl()。
- sensor.IOCTL_GET_RGB_STATS: int¶
從感測器取得
(r, gb, gr, b)RGB 統計資料。請參見sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_BIASES: int¶
設定 GENX320 感測器偏壓預設集。請參見
sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_BIAS: int¶
設定單一 GENX320 感測器偏壓。請參見
sensor.ioctl()。
- sensor.IOCTL_GENX320_SET_AFK: int¶
設定 GENX320 抗閃爍濾波器參數。請參見
sensor.ioctl()。