On Linux, after applying the filter, I get vertical green stripes in the preview and shortly after, the program crashes. I'm not really familiar with OBS, openCV and the onnxruntime machine learning thing at all, so I do not have a clue on what's going on.
info: v4l2-input: Start capture from /dev/video1
info: v4l2-input: Input: 0
info: v4l2-input: Resolution: 640x480
info: v4l2-input: Pixelformat: YU12
info: v4l2-input: Linesize: 640 Bytes
info: v4l2-input: Framerate: 30,00 fps
~/.config/obs-studio
└── plugins
└── obs-backgroundremoval
├── bin
│ └── 64bit
│ └── obs-backgroundremoval.so
└── data
├── locale
│ └── en-US.ini
└── SINet_Softmax.onnx
Thread 15 "libobs: graphic" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffb6d59640 (LWP 2167)]
cv::hal::opt_AVX2::(anonymous namespace)::YUV422toRGB8Invoker<2, 0, 1, 3>::operator() (this=0x7fffb6d575e0, range=...)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.simd.hpp:1711
Downloading source file /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.simd.hpp...
1711 v_load_deinterleave(yuv_src + i, u, vy[0], v, vy[1]);
(gdb) bt
#0 cv::hal::opt_AVX2::(anonymous namespace)::YUV422toRGB8Invoker<2, 0, 1, 3>::operator()(cv::Range const&) const
(this=0x7fffb6d575e0, range=<optimized out>)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.simd.hpp:1711
#1 0x00007fffa4d3ceb9 in cv::(anonymous namespace)::ParallelLoopBodyWrapper::operator() (sr=<optimized out>, this=0x7fff10001dd8)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/src/parallel.cpp:337
#2 cv::(anonymous namespace)::ProxyLoopBody::operator() (range=<optimized out>, this=0x7fff10001dd8)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/src/parallel.cpp:378
#3 tbb::interface9::internal::start_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::run_body (r=<optimized out>, this=0x7fff10001dc0) at /usr/include/tbb/parallel_for.h:115
#4 tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>, tbb::blocked_range<int> > (range=<optimized out>, start=..., this=0x7fff10001de8)
at /usr/include/tbb/partitioner.h:438
#5 tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>, tbb::blocked_range<int> > (range=<optimized out>, start=..., this=0x7fff10001de8) at /usr/include/tbb/partitioner.h:256
#6 tbb::interface9::internal::start_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute() (this=0x7fff10001dc0) at /usr/include/tbb/parallel_for.h:142
#7 0x00007fffa4aeaf47 in tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::process_bypass_loop(tbb::internal::context_guard_helper<false>&, tbb::task*, long)
(isolation=<optimized out>, t=0x7fff10001dc0, context_guard=<optimized out>, this=<optimized out>)
at ../../src/tbb/custom_scheduler.h:474
#8 tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::local_wait_for_all(tbb::task&, tbb::task*)
(this=0x7fffac024c00, parent=..., child=<optimized out>) at ../../src/tbb/custom_scheduler.h:636
#9 0x00007fffa4ae86a0 in tbb::internal::generic_scheduler::local_spawn_root_and_wait(tbb::task*, tbb::task*&)
(this=0x7fffac024c00, first=0x7fffac0255c0, next=@0x7fffac0255b8: 0x7fffac12ff40) at ../../src/tbb/scheduler.cpp:738
#10 0x00007fffa4e2ce8c in tbb::task::spawn_root_and_wait(tbb::task&) (root=...) at /usr/include/tbb/task.h:809
#11 tbb::interface9::internal::start_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, cv::(anonymous namespace)::ProxyLoopBody const&, tbb::auto_partitioner const&) [clone .constprop.0] (range=..., body=..., partitioner=...) at /usr/include/tbb/parallel_for.h:95
#12 0x00007fffa4d35761 in tbb::parallel_for<tbb::blocked_range<int>, cv::(anonymous namespace)::ProxyLoopBody>
(body=<optimized out>, range=...) at /usr/include/tbb/parallel_for.h:201
#13 cv::(anonymous namespace)::ProxyLoopBody::operator() (this=<optimized out>)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/src/parallel.cpp:384
#14 tbb::interface7::internal::delegated_function<cv::(anonymous namespace)::ProxyLoopBody, void>::operator()() const
(this=<optimized out>) at /usr/include/tbb/task_arena.h:96
#15 0x00007fffa4ae2b03 in tbb::interface7::internal::task_arena_base::internal_execute(tbb::interface7::internal::delegate_base&) const (this=this@entry=0x7fffa4f09320 <_ZN2cv12_GLOBAL__N_1L8tbbArenaE.lto_priv.0>, d=...) at ../../src/tbb/arena.cpp:1105
#16 0x00007fffa4d3c158 in tbb::interface7::task_arena::execute_impl<void, cv::(anonymous namespace)::ProxyLoopBody>
(this=0x7fffa4f09320 <_ZN2cv12_GLOBAL__N_1L8tbbArenaE.lto_priv.0>, f=...) at /usr/include/tbb/task_arena.h:271
#17 tbb::interface7::task_arena::execute<cv::(anonymous namespace)::ProxyLoopBody>
(f=..., this=0x7fffa4f09320 <_ZN2cv12_GLOBAL__N_1L8tbbArenaE.lto_priv.0>) at /usr/include/tbb/task_arena.h:424
#18 cv::parallel_for_impl (nstripes=-1, body=..., range=...)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/src/parallel.cpp:546
#19 cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double) (range=..., body=..., nstripes=nstripes@entry=-1)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/src/parallel.cpp:512
#20 0x00007fffa5308d7b in cv::hal::opt_AVX2::(anonymous namespace)::cvtYUV422toRGB<2, 0, 1, 3>(uchar*, size_t, uchar const*, size_t, int, int)
(dst_data=<optimized out>, dst_step=<optimized out>, src_data=<optimized out>, src_step=<optimized out>, width=<optimized out>, height=<optimized out>) at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.simd.hpp:1779
#21 0x00007fffa5311b29 in cv::hal::opt_AVX2::cvtOnePlaneYUVtoBGR(unsigned char const*, unsigned long, unsigned char*, unsigned long, int, int, int, bool, int, int)
(src_data=0x7fffd01562a0 "\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020"..., src_step=1280, dst_data=0x7fffac046ac0 "", dst_step=1920, width=640, height=480, dcn=3, swapBlue=true, uIdx=0, ycn=1) at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.simd.hpp:1972
#22 0x00007fffa5014132 in cv::hal::cvtOnePlaneYUVtoBGR(unsigned char const*, unsigned long, unsigned char*, unsigned long, int, int, int, bool, int, int)
(src_data=0x7fffd01562a0 "\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020\200\020"..., src_step=1280, dst_data=0x7fffac046ac0 "", dst_step=1920, width=640, height=480, dcn=3, swapBlue=true, uIdx=0, ycn=1) at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color_yuv.dispatch.cpp:190
#23 0x00007fffa4fde674 in cv::cvtColorOnePlaneYUV2BGR(cv::_InputArray const&, cv::_OutputArray const&, int, bool, int, int)
(ycn=1, uidx=0, swapb=true, dcn=3, _dst=..., _src=<optimized out>)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/core/include/opencv2/core/mat.inl.hpp:1198
#24 cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)
(_src=<optimized out>, _dst=..., code=<optimized out>, dcn=3)
at /usr/src/debug/opencv-4.5.1-2.4.x86_64/modules/imgproc/src/color.cpp:338
#25 0x00007fffb458d6d0 in filter_render(void*, obs_source_frame*) ()
at /home/chris/.config/obs-studio/plugins/obs-backgroundremoval/bin/64bit/obs-backgroundremoval.so
#26 0x00007ffff617667e in filter_async_video () at /usr/lib64/libobs.so.0
#27 0x00007ffff6179414 in obs_source_video_render () at /usr/lib64/libobs.so.0
#28 0x00007ffff61ac309 in () at /usr/lib64/libobs.so.0
#29 0x00007ffff617939f in obs_source_video_render () at /usr/lib64/libobs.so.0
#30 0x00007ffff617f8bb in obs_transition_video_render () at /usr/lib64/libobs.so.0
#31 0x00007ffff617939f in obs_source_video_render () at /usr/lib64/libobs.so.0
#32 0x00007ffff61a91ab in obs_view_render () at /usr/lib64/libobs.so.0
#33 0x00007ffff61b103a in obs_graphics_thread_loop () at /usr/lib64/libobs.so.0
#34 0x00007ffff61b29c0 in obs_graphics_thread () at /usr/lib64/libobs.so.0
#35 0x00007ffff507e299 in start_thread () at /lib64/libpthread.so.0
#36 0x00007ffff4fa64a3 in clone () at /lib64/libc.so.6
If I'll find more information, I'll add it.