こんにちは、皆さん。
私はカメラセンサーOS02G10を使っています。センサーからRAW10のファイルは入手できますが、画像は正しくありません。位置ずれがあり、画像内の2つの部分が互いにずれています。こちらでご覧いただけます:
カメラセンサーやmipi-csiのDeviceTree設定を何度も試しましたが、画像に変化はありませんでした。
v4l2にも問題があります。下記で確認できます。なぜそれができないのか
Driver Info:
Driver name : mx6s-csi
Card type : i.MX6S_CSI
Bus info : platform:32e20000.csi_bridge
Driver version : 5.10.72
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 0
Video input : 0 (Camera: ok)
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : ''
Field : None
Bytes per Line : 0
Size Image : 4147200
Colorspace : Default
Transfer Function : Default (maps to Rec. 709)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 0, Height 0
Default : Left 0, Top 0, Width 0, Height 0
Pixel Aspect: 1/1
Selection Video Capture: crop, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: crop_default, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: compose, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: compose_default, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: compose_bounds, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: compose_padded, Left 0, Top 0, Width 0, Height 0, Flags:
Selection Video Capture: native_size, Left 0, Top 0, Width 0, Height 0, Flags:しかし、写真を見るともっと詳細がわかる。v4l2が画像がおかしい原因なのか、それとも別の原因なのかを特定しようとしています。何が問題なのでしょうか?
v4l2-ctl -d /dev/video0 --verbose --set-fmt-video=width=1920,height=1080,pixelformat=BG10 --stream-mmap --stream-count=1 --stream-to=bb001.raw
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'BG10' (10-bit Bayer BGBG/GRGR)
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: ITU-R 601
Quantization : Full Range
Flags :
VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_STREAMON returned 0 (Success)
cap dqbuf: 0 seq: 0 bytesused: 4147200 ts: 46.903731 delta: 46903.731 ms (ts-monotonic, ts-src-eof)こんにちは、Linuxのアップストリームドライバーを使えます。
私たちはこれをi.mx8MPベースのDebixプラットフォームでテストしました。
こちらがドライバです
https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=263d0fa1d46ac1ae2...
こちらが当社のDTです
--
ルトヴィイ
シリコンシグナルズ
mx6s_vidioc_g_fmt_vid_cap が不完全なようです。
btarnowski_0-1672393812102.pngbtarnowski_0-1672393812102.png
RAW10に関しては解決策があります
また、v4l2-ctl --device /dev/video0 --all に関して
何が問題なのかは判断が難しいですが、もしかするとカメラドライバーはV4L2でctrlioではなくctrl APIを使っているのかもしれません
しかし今は問題ではないので、次にすべきことは露出やゲインなどのパラメータを設定することです
こんにちは、 @btarnowskiさん
v4l2-ctl --all で表示させるには、mx6s_capture.c を編集するだけで済みます。関数 'mx6s_vidioc_s_fmt_vid_cap' では、幅/高さ/サイズ画像/フィールドだけでなく、pix 構造体全体をコピーしてください。
csi_dev->pix = f->fmt.pix;
このようにすることで、内部構造体 csi_dev->pix には get_format を実行する際に必要なすべての情報が含まれます (関数 mx6s_vidioc_g_fmt_vid_cap を参照)。
mx6s_capture.cには細かいミスがたくさんあり、v4l2ツールとの互換性を向上させるためには多くの改善が必要だと感じています。
よろしくお願いします。
こんにちは、
v4l2-ctl --device /dev/video0 --allとgstreamに関して進展がありません。
カメラセンサのドライバの問題のようです。
dev/media0 - 不要
カメラセンサーの取り扱いにはさまざまなアプローチがあります。
以下に、低レベルのAPI処理の違いを示します。
OV5640(カメラセンサー)は他のデバイスで動作します。
btarnowski_0-1663928001102.pngbtarnowski_0-1663928001102.png
そしてもう一つの比較:
btarnowski_1-1663928150167.pngbtarnowski_1-1663928150167.png
何か解決策は見つかりましたか?私も同じエラーが出ています。もし同じエラーが出たら、解決策を教えてください。
また、正しくない課題も見られます。csi_bridgeはmedia0に割り当てる必要があります。
btarnowski_0-1662374734790.pngbtarnowski_0-1662374734790.png
どうすればいいですか?何かアドバイスをいただけますか?
その間に:
root@qrnd:~# gst-inspect-1.0 -a > gst-inspect.txt
結果は添付ファイルに記載されています。
次の問題:ビデオデバイスは見えますが、/dev/mediaデバイスはありません
root@qrnd:~# v4l2-ctl --list-devices
i.MX6S_CSI (platform:32e20000.csi_bridge):
/dev/video0
vsi_v4l2dec (platform:vsi_v4l2dec):
/dev/video2
vsi_v4l2enc (platform:vsi_v4l2enc):
/dev/video1Yocto ビルド用のパッケージリストを更新しなければなりませんでした:
# カメラサポートツール
IMAGE_INSTALL_append = "i2c-tools"
IMAGE_INSTALL_append = "v4l-utils"
IMAGE_INSTALL_append = "gstreamer1.0"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-good"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-imx"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-base"
IMAGE_INSTALL_append = " gst-player"
IMAGE_INSTALL_append = " gstreamer1.0-meta-base"
IMAGE_INSTALL_append = " gst-examples"
IMAGE_INSTALL_append = " gstreamer1.0-rtsp-server"
IMAGE_INSTALL_append = " gst1.0-fsl-plugin"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-good-video4linux2"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-good-png"
IMAGE_INSTALL_append = " gstreamer1.0-plugins-good-jpeg"
しかし、コマンドに問題が発生しました
gst -ローンチ- 1.0v4l2srcデバイス= / dev / video0 num - buffers = 1 !ビデオ/ x - raw 、幅= 1920 、高さ= 1080 !pngenc !filesink location =/ tmp / test_1920x1080 . png
私は以下を受け取りました:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:
pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../git/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.057218529
Setting pipeline to NULL ...
Freeing pipeline ...どうやらYoctoがこの問題を作っているようです。カーネルイメージには必要なコンポーネントがすべて含まれているわけではありません。gstreamer-plugins-goodから v4lsrc が欠落しています。Yocto Buildに追加のパッケージを追加しましたが、効果はありませんでした。Yoctoビルドプロセスのデプロイ段階を調べる必要があります。