I'm trying to have OpenCV process a frame in the middle of a gstreamer pipe.
I have one gstreamer pipe generating the stream, sending it to appsink for OpenCV code to receive:
v4l2src ! ffmpegcolorspace ! jpegenc ! appsink name=sink
And another pipe getting it from appsrc (to which OpenCV sends data) and outputting it on the screen:
appsrc name=src ! jpegdec ! xvimagesink
I open every frame with a pull-buffer request on sink and process it with OpenCV, then use push-buffer on src. I am doing all that in Python.
For some reason, that does not seem to work (segmentation fault).
But I'm not really trying to fix it; it's terribly inefficient anyway. I am just wondering whether there any better way to have OpenCV process the frame before it reaches an output sink?
Did you try gst-opencv? It supplies several opencv primitives as gstreamer plugins.
EDIT: Seems like it's merged into gst-plugins-bad, and the link above is outdated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With