Commit Graph
13 Commits
Author SHA1 Message Date
Mansour Moufid a68e8d8289 Merge pull request #21337 from mansourmoufid:videocapture-get-property-return
Make cv::VideoCapture::get return cv::CAP_PROP_UNKNOWN (-1) for unsupported properties #21337

The return value indicating an unsupported property is not consistent across backends.

I stumbled on this issue because my code was determining if a property value is valid if it's non-zero (like the documentation says), which worked fine on macOS, but not on Android.

For example, auto-exposure is not supported on macOS, so get() returns 0. But it is supported on Android and 0 means auto-exposure is off.

I think -1 is the better return value to indicate unsupported properties.

I made changes to all the backends. I think I got every case. This breaks API compatibility for some backends, so I based this on branch 3.4.

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or other license that is incompatible with OpenCV
- [x] The PR is proposed to proper branch
- [ ] There is reference to original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-06-02 08:27:24 +03:00
Maksim Shabunin 7bdc618697 Merge pull request #26025 from mshabunin:cpp-videoio-highgui
❗ Potential conflicts with #25958
C-API cleanup: highgui, videoio #26025

❗  Merge with: opencv/opencv_contrib#3780

This PR removes usage of C-API from highgui and videoio modules. Only source code is affected, tests were not using obsolete API.

It should be possible to backport these changes to 4.x branch preserving removed public headers and source files (`*_c.h` and `*_c.cpp`).


#### Checklist

I tried to verify as many backends as possible, though these checks were not as thorough as I'd like them to be. Below is the checklist covering all modified backends with their statuses.

> 🔹 - small changes
> 🟢 - consider working
> ⚪ - considered untested

##### highgui

Pass | Backend | Local check | CI check
-----|---------|-------------|---------
🟢 | GTK2 | build + test, plugin build | build + test ❔ 
🟢 | GTK3 | build + test, plugin build | build + test
🟢 | QT | build + test, plugin build |
⚪ | Wayland 🔹 | |
🟢 | WIN32 🔹 | | build + test
🟢 | Cocoa 🔹 | | build + test
⚪ | WinRT | | 

##### videoio 

Pass | Backend | Local check | CI check
-----|---------|-------------|---------
🟢 | Android Camera/MediaNDK 🔹 | | build
🟢 | Aravis | build |
🟢 | AVFoundation OSX | | build + test
⚪ | AVFoundation iOS | | build
🟢 | DC1394 | build |
🟢 | DShow 🔹 | | build
🟢 | FFMpeg | build, plugin build | build + test
🟢 | GPhoto 🔹 | build |
🟢 | GStreamer | build, plugin build | build + test
🟢 | Images | build | build + test
🟢 | MSMF 🔹 | | build + test
🟢 | OpenNI | build |
🟢 | PVAPI | build |
🟢 | V4L | build + test | build
🟢 | XIMEA | build |
🟢 | XINE 🔹 | build |

#### Notes

- local linux build checks performed using [this framework](https://github.com/mshabunin/opencv-videoio-build-check)
- minor extra changes made in both `cap_avfoundation*.mm` to make them slightly more synchronized - it would be better to combine them into a single one in the future
- configurations with plugins have been build but not tested
- **moved unrelated changes to separate PRs** ~two issues have been fixed in separate commits:~
  - ~imgproc: missing `cv::hal::` color conversion functions has been used in MediaSDK backend~
  - ~videoio/V4L: wrong color conversion mode caused bad colors for NV12 camera input format (RGB instead of BGR)~

It would be nice to check following functionality manually:
- [ ] OSX: camera input
- [ ] iOS: camera and file input
- [ ] WinRT: build, some testing
- [x] Linux/Wayland: build
2024-09-09 16:42:44 +03:00
Maksim Shabunin 9702987209 Framework for dynamic videoio backends, FFmpeg and GStreamer plugins 2019-02-26 13:50:30 +03:00
Alexander Alekhin 8f0669c300 videoio: apply CV_OVERRIDE/CV_FINAL 2018-03-28 17:57:59 +03:00
Alexander Alekhin 602f047fe8 build: replace WIN32 => _WIN32 2017-07-25 13:30:48 +03:00
Prof. Dr. Rudolf Haussmann 9f1eb70dbc Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

	modified:   modules/java/generator/gen_java.py
	modified:   modules/videoio/include/opencv2/videoio.hpp
	modified:   modules/videoio/include/opencv2/videoio/videoio_c.h
	modified:   modules/videoio/src/cap_dshow.cpp
	modified:   modules/videoio/src/cap_pvapi.cpp

Following changes have been made:
1. Some minor bugs have been removed.
2. In the PvAPI module the option CAP_PROP_MONOCROME has been removed because
   this option does not make sense and causes an error if a color camera is used.
3. Instead the new option CAP_PROP_PVAPI_PIXELFORMAT has been added which allows
   to activate the different pixel formats (color modes) of an AVT camera.
4. Since there were two identical defines
   CAP_PROP_MONOCROME = 19
   CAP_PROP_MONOCHROME = 19
   which were also used in the other module DSHOW, the first one with an orthographic
   error has been removed in favor of the second one.
2015-03-07 12:53:32 +01:00
Artur Wieczorek 854a722c70 Implement VideoCapture::get, CvCapture::getProperty, IVideoCapture::getProperty as constant methods. 2014-12-16 16:08:22 +01:00
Vadim Pisarevsky 30111a786a Merge pull request #3085 from nickdademo:pvapi_fix_decimation_enum 2014-08-13 10:51:46 +00:00
Nick D'Ademo 91676de638 Change decimation enum values so they can be used in resolution calculations.
BUGFIX: Fixed bugged when setting PVAPI property CV_CAP_PROP_FRAME_HEIGHT.
2014-08-12 15:18:11 +02:00
Vadim Pisarevsky f937f4d951 Merge pull request #3077 from kenlck:master 2014-08-11 16:41:30 +00:00
Low Chin Kian 911e1bd1e4 Allow full range IPv4 support, up to 255.255.255.255
Signed-off-by: Low Chin Kian <kenlck1990@gmail.com>
2014-08-11 21:08:37 +08:00
Nick D'Ademo 2b94bcffb9 Added get and set for additional PVAPI properties: DecimationHorizontal, DecimationVertical, BinningX, BinningY 2014-08-11 13:30:36 +02:00
vbystricky d58f736935 Split highgui module to videoio and highgui 2014-07-14 23:16:47 +04:00