yes you can do it~~~ I build source it in ver 3.4.16
apt install libv4l-dev
-DWITH_LIBV4L=ON -DWITH_GSTREAMER=OFF
cmake .. -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/opt/opencv -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-O3 -g" -DCMAKE_CXX_FLAGS_RELEASE="-O3 -g" -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_JPEG=ON -DBUILD_PNG=ON -DBUILD_ZLIB=ON -DWITH_LIBV4L=ON -DBUILD_opencv_python3=ON -DBUILD_EXAMPLES=ON -DWITH_GSTREAMER=OFF -DWITH_CUDA=OFF
cmake --build . --config Release --target install -- -j$CPU_NUM VERBOSE=1
////////because
~~~in cap_gstreamer.cpp
case CV_CAP_PROP_CONVERT_RGB:
break;
~~~in cap_libv4l.cpp
case CV_CAP_PROP_MODE:
int mode;
mode = cvRound(value);
if (capture->mode != mode) {
switch (mode) {
case CV_CAP_MODE_BGR:
case CV_CAP_MODE_RGB:
case CV_CAP_MODE_GRAY:
case CV_CAP_MODE_YUYV:
capture->mode = mode;
case CV_CAP_MODE_RGB:
requestedPixelFormat = V4L2_PIX_FMT_RGB24;
break;
~~~~in your cpp
cv::VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 800);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 600);
cap.set(CV_CAP_PROP_MODE, CV_CAP_MODE_RGB);