1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

Merge branch 4.x

This commit is contained in:
Alexander Smorkalov
2025-02-05 09:28:27 +03:00
180 changed files with 11419 additions and 1819 deletions
+60 -8
View File
@@ -316,14 +316,14 @@ enum { CAP_PROP_OPENNI_OUTPUT_MODE = 100,
#pragma warning( disable: 5054 )
#endif
//! OpenNI shortcuts
enum { CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_OUTPUT_MODE,
CAP_OPENNI_DEPTH_GENERATOR_PRESENT = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_BASELINE,
CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_FOCAL_LENGTH,
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_REGISTRATION,
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION,
CAP_OPENNI_IR_GENERATOR_PRESENT = CAP_OPENNI_IR_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
enum { CAP_OPENNI_IMAGE_GENERATOR_PRESENT = +CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = +CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_OUTPUT_MODE,
CAP_OPENNI_DEPTH_GENERATOR_PRESENT = +CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
CAP_OPENNI_DEPTH_GENERATOR_BASELINE = +CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_BASELINE,
CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = +CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_FOCAL_LENGTH,
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = +CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_REGISTRATION,
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION,
CAP_OPENNI_IR_GENERATOR_PRESENT = +CAP_OPENNI_IR_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT
};
#ifdef _MSC_VER
#pragma warning( pop )
@@ -573,6 +573,18 @@ enum { CAP_PROP_ARAVIS_AUTOTRIGGER = 600 //!< Autom
//! @} ARAVIS
/** @name Android
@{
*/
//! Properties of cameras available through NDK Camera API backend
enum { CAP_PROP_ANDROID_DEVICE_TORCH = 8001,
};
//! @} Android
/** @name AVFoundation framework for iOS
@{
*/
@@ -700,6 +712,25 @@ enum VideoCaptureOBSensorProperties{
//! @} videoio_flags_others
/** @brief Read data stream interface
*/
class CV_EXPORTS_W IStreamReader
{
public:
virtual ~IStreamReader();
/** @brief Read bytes from stream */
virtual long long read(char* buffer, long long size) = 0;
/** @brief Sets the stream position
*
* @param offset Seek offset
* @param origin SEEK_SET / SEEK_END / SEEK_CUR
*
* @see fseek
*/
virtual long long seek(long long offset, int origin) = 0;
};
class IVideoCapture;
//! @cond IGNORED
@@ -775,6 +806,14 @@ public:
*/
CV_WRAP explicit VideoCapture(int index, int apiPreference, const std::vector<int>& params);
/** @overload
@brief Opens a video using data stream.
The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`.
See cv::VideoCaptureProperties
*/
CV_WRAP VideoCapture(const Ptr<IStreamReader>& source, int apiPreference, const std::vector<int>& params);
/** @brief Default destructor
The method first calls VideoCapture::release to close the already opened file or camera.
@@ -829,6 +868,19 @@ public:
*/
CV_WRAP virtual bool open(int index, int apiPreference, const std::vector<int>& params);
/** @brief Opens a video using data stream.
@overload
The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`.
See cv::VideoCaptureProperties
@return `true` if the file has been successfully opened
The method first calls VideoCapture::release to close the already opened file or camera.
*/
CV_WRAP virtual bool open(const Ptr<IStreamReader>& source, int apiPreference, const std::vector<int>& params);
/** @brief Returns true if video capturing has been initialized already.
If the previous call to VideoCapture constructor or VideoCapture::open() succeeded, the method returns
@@ -35,6 +35,9 @@ CV_EXPORTS_W std::vector<VideoCaptureAPIs> getCameraBackends();
/** @brief Returns list of available backends which works via `cv::VideoCapture(filename)` */
CV_EXPORTS_W std::vector<VideoCaptureAPIs> getStreamBackends();
/** @brief Returns list of available backends which works via `cv::VideoCapture(buffer)` */
CV_EXPORTS_W std::vector<VideoCaptureAPIs> getStreamBufferedBackends();
/** @brief Returns list of available backends which works via `cv::VideoWriter()` */
CV_EXPORTS_W std::vector<VideoCaptureAPIs> getWriterBackends();
@@ -58,6 +61,13 @@ CV_EXPORTS_W std::string getStreamBackendPluginVersion(
CV_OUT int& version_API
);
/** @brief Returns description and ABI/API version of videoio plugin's buffer capture interface */
CV_EXPORTS_W std::string getStreamBufferedBackendPluginVersion(
VideoCaptureAPIs api,
CV_OUT int& version_ABI,
CV_OUT int& version_API
);
/** @brief Returns description and ABI/API version of videoio plugin's writer interface */
CV_EXPORTS_W std::string getWriterBackendPluginVersion(
VideoCaptureAPIs api,
@@ -10,6 +10,37 @@
namespace cv {
CV_EXPORTS std::string icvExtractPattern(const std::string& filename, unsigned *offset);
class PluginStreamReader : public IStreamReader
{
public:
PluginStreamReader(void* _opaque,
long long (*_read)(void* opaque, char* buffer, long long size),
long long (*_seek)(void* opaque, long long offset, int way))
{
opaque = _opaque;
readCallback = _read;
seekCallback = _seek;
}
virtual ~PluginStreamReader() {}
long long read(char* buffer, long long size) override
{
return readCallback(opaque, buffer, size);
}
long long seek(long long offset, int way) override
{
return seekCallback(opaque, offset, way);
}
private:
void* opaque;
long long (*readCallback)(void* opaque, char* buffer, long long size);
long long (*seekCallback)(void* opaque, long long offset, int way);
};
}
#endif // OPENCV_VIDEOIO_UTILS_PRIVATE_HPP