3D打印機(jī)Klipper攝像Crowsnest插件安裝及Timelapse延時(shí)攝影

一、要點(diǎn):
?。?!重要:新版kiauh? 腳本中已包含crowsnest插件,安裝更加便攜!
1、一般免驅(qū)即插即用攝像頭,均可以在linux、armbian等系統(tǒng)下的klipper支持使用,無需另外安裝驅(qū)動(dòng)。
2、不同于常規(guī)的的?MJPG-Streamer方式安裝,Mainsail下的Crowsnest依靠μStreamer,提供更輕量更快速的替代服務(wù),具備支持?jǐn)嗑€重連后信號(hào)恢復(fù),而無需重啟服務(wù)。
3、攝像頭支持的分辨率及刷新率等參數(shù)可以通過 Crowsnest.log查看。
二、Crowsnest的安裝
1、安裝
方法一:kiauh??腳本安裝
git clone https://gitee.com/miroky/kiauh.git
./kiauh/kiauh.sh

選擇install 11,即可自動(dòng)安裝
方法二:手動(dòng)安裝
cd ~
git clone https://github.com/mainsail-crew/crowsnest.git
cd ~/crowsnest
sudo make install
安裝成功后可在moonraker.conf添加以下代碼:
[update_manager crowsnest]
type: git_repo
path: ~/crowsnest
origin: https://github.com/mainsail-crew/crowsnest.git
install_script: tools/install.sh
卸載'crowsnest':
cd ~/crowsnest
make uninstall
2、配置:
crowsnest.conf 簡(jiǎn)單設(shè)置如下
[crowsnest]
log_path: ~/printer_data/logs/crowsnest.log
log_level: quiet
[cam 1]
mode: mjpg
port: 8080
device: /dev/video0
resolution: 640x480
max_fps: 15
其中device目錄可通過ls /dev/* 命令查詢
resolution分辨率max_fps最大幀率等更多參數(shù)可通過crowsnest.log查看。
3、v4l2ctl配置:
crowsnest.log中,可以查詢攝像頭可調(diào)節(jié)的參數(shù),如以下設(shè)置:
v4l2ctl: focus_auto=0,focus_absolute=16
含義為禁止自動(dòng)對(duì)焦,焦點(diǎn)設(shè)置為16。
焦點(diǎn)設(shè)置參考以下文章:https://www.coder.work/article/963086
對(duì)于 UVC 的 USB 網(wǎng)絡(luò)攝像頭-兼容(大多數(shù)情況下),很有可能可以使用相機(jī)的自動(dòng)對(duì)焦然后鎖定它。要確定相機(jī)是否允許通過 UVC 執(zhí)行此操作,在 Linux 上可以使用 v4l2ctl。 v4l2ctl -l 列出所有可用的控件。
例如,以下命令對(duì) Ubuntu 16.04 機(jī)器上的 Microsoft LifeCam Cinema 起到了作用,該機(jī)器運(yùn)行了一個(gè)簡(jiǎn)單的 Python OpenCV 程序來顯示當(dāng)前幀:
> v4l2-ctl -d 0 -c focus_auto=1
> v4l2-ctl -d 0 -C focus_absolute
focus_absolute: 12
將物體移近相機(jī)后,焦點(diǎn)發(fā)生變化,我得到了一個(gè)不同的 focus_absolute 值:(所以 UVC 可以訪問自動(dòng)對(duì)焦選擇的值。)
> v4l2-ctl -d 0 -C focus_absolute
focus_absolute: 17
然后我改為手動(dòng)對(duì)焦,這鎖定了自動(dòng)對(duì)焦選擇的值:
> v4l2ctl -d 0 -c focus_auto=0
> v4l2ctl -d 0 -C focus_absolute
focus_absolute: 17
因此對(duì)于 LifeCam Cinema,代碼唯一需要做的就是將 focus_auto 控件最初更改為自動(dòng) (1),然后在聚焦后更改為手動(dòng)是要上鎖的。

三、Timelapse設(shè)置:
1、要點(diǎn):
要獲得最佳拍攝效果,需要對(duì)攝像頭位置進(jìn)行調(diào)試安裝。通??筛鶕?jù)個(gè)人需要,安裝在框架上,或熱床上。
在設(shè)置延時(shí)參數(shù)前,最好鎖定攝像頭焦距。如:v4l2ctl: focus_auto=0,focus_absolute=16
2、參數(shù)設(shè)置:參閱https://www.bilibili.com/read/cv16576075

# moonraker.conf
# [timelapse] section
[timelapse]
#output_path: ~/timelapse/ #文件輸出路徑
#frame_path: /tmp/timelapse/ #項(xiàng)目路徑
#ffmpeg_binary_path: /usr/bin/ffmpeg #編譯器路徑
########################
########配制選項(xiàng)########
########################
#enabled: True #是否啟用時(shí)間延時(shí)攝影
#mode: layermacro #此模式使用宏來觸發(fā)抓取幀,但需要設(shè)置切片器才能在圖層更改時(shí)添加GCODE
#snapshoturl: http://localhost:8080/?action=snapshot #攝像頭調(diào)用地址
#gcode_verbose: True #?“true”啟用或“false”禁用宏的詳細(xì)程度?
#parkhead: False #?“true”啟用或“false”禁用在拍攝幀之前移動(dòng)打印頭。?
#parkpos: back_left ?#這定義了在拍攝相框之前將打印頭停放的位置??赡艿呐渲檬荹center, front_left, front_right, back_left, back_right, custom]
#如果選擇了custom想要自定義打印頭駐留的位置可以設(shè)置下面的參數(shù)
#park_custom_pos_x: 0.0 ?#自定義打印頭駐留的絕對(duì) X 坐標(biāo)(單位 mm)?
#park_custom_pos_y: 0.0 #自定義打印頭駐留的絕對(duì) Y 坐標(biāo)(單位 mm)
#park_custom_pos_dz: 0.0 #?自定義打印頭駐留的相對(duì) Y 坐標(biāo)(單位 mm)?
#park_travel_speed: 100 #駐留時(shí)打印頭移動(dòng)速度(單位毫米/秒
#park_retract_speed: 15 ?#駐留時(shí)縮回速度(單位毫米/秒)?
#park_extrude_speed: 15 #?恢復(fù)打印時(shí)擠出的速度(單位毫米/秒)?
#park_retract_distance: 1.0 #?回抽來以防止?jié)B出的距離(單位毫米)?
#park_extrude_distance: 1.0 #?恢復(fù)打印之前擠出以填充噴嘴的距離(單位 mm)?
#hyperlapse_cycle: 30 #定義在超延時(shí)模式下拍攝幀的時(shí)間間隔
#autorender: True #?“true”啟用或“false”禁用打印結(jié)束時(shí)渲染過程的自動(dòng)觸發(fā)?;蛘?,您可以使用最終 gcode 中的“TIMELAPSE_RENDER”或渲染 http 終端節(jié)點(diǎn)(可能集成到前端)來觸發(fā)渲染過程。?
#constant_rate_factor: 23 #?這將配置渲染視頻的質(zhì)量與文件大小。CRF 刻度的范圍是 0–51,其中 0 表示無損,23 表示默認(rèn)值,51 表示質(zhì)量最差。較低的值通常會(huì)導(dǎo)致較高的質(zhì)量,主觀上合理的范圍為17-28。將 17 或 18 視為視覺上無損。更多信息: ??https://trac.ffmpeg.org/wiki/Encode/H.264?F
#output_framerate: 30 #?定義視頻的幀速率。(每秒單位幀數(shù))注意:如果啟用了variable_fps,這將被忽略。?
#pixelformat: yuv420p #?定義輸出視頻的像素格式。一些較舊的h264設(shè)備,如手機(jī)和其他設(shè)備需要“ yuv420p”,這是默認(rèn)的延時(shí)組件。要獲取哪些像素格式可用的更多信息,請(qǐng)?jiān)谙到y(tǒng)控制臺(tái)中運(yùn)行“ffmpeg -pix_fmts”或參考 ffmpeg 文檔:??https://ffmpeg.org/ffmpeg.html?
#time_format_code: %Y%m%d_%H%M #?這定義了應(yīng)如何命名呈現(xiàn)的視頻。它使用 python 日期時(shí)間格式。默認(rèn)值為“%Y%m%d_%H%M”。有關(guān)日期時(shí)間格式的更多信息,請(qǐng)參閱??此處 https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes?
#extraoutputparams:? ?定義FFMPEG的額外輸出參數(shù) 更多信息: ??https://ffmpeg.org/ffmpeg.html?? 注意:在這里指定任何內(nèi)容可能會(huì)禁用其他功能?。╢fmpeg 限制)?
#variable_fps: False #?“true”啟用或“false”禁用輸出幀速率的變量計(jì)算。這使用拍攝的幀數(shù)和“目標(biāo)長(zhǎng)度”,但受“variable_fps_min”和“variable_fps_max”設(shè)置的限制。
#targetlength: 10 定義視頻的目標(biāo)長(zhǎng)度(單位秒)
#variable_fps_min: 5 ?variable_fps的最小 fps(每秒幀數(shù))。?
#variable_fps_max: 60 variable_fps的最大 fps(每秒幀數(shù))。?
#flip_x: False
#flip_y: False
#duplicatelastframe: 0 #?將最后一幀復(fù)制到輸出視頻的末尾。?
#previewimage: True #?“true”啟用或“false”禁用最后一幀來生成預(yù)覽縮略圖?
#saveframes: False ?“True”啟用或“False”禁用將幀打包到 zip 文件以供外部使用或呈現(xiàn)。??