This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/main by this push:
     new 39d021e32 MINIFICPP-2817 Remove unmaintained OpenCV extension (#2178)
39d021e32 is described below

commit 39d021e32cf190450f15242ee4fa9736e6c49cc2
Author: Gabor Gyimesi <[email protected]>
AuthorDate: Mon May 18 13:07:27 2026 +0200

    MINIFICPP-2817 Remove unmaintained OpenCV extension (#2178)
---
 .github/workflows/ci.yml                         |   5 +-
 CMakeLists.txt                                   |   2 +-
 Extensions.md                                    |  19 +-
 LICENSE                                          | 328 -----------------------
 PROCESSORS.md                                    |  75 ------
 README.md                                        |   1 -
 ThirdParties.md                                  |   2 +-
 Windows.md                                       |   3 +-
 cmake/BundledOpenCV.cmake                        | 223 ---------------
 cmake/DockerConfig.cmake                         |   1 -
 cmake/MiNiFiOptions.cmake                        |   1 -
 cmake/opencv/FindOpenCV.cmake                    |  25 --
 extensions/opencv/CMakeLists.txt                 |  37 ---
 extensions/opencv/CaptureRTSPFrame.cpp           | 120 ---------
 extensions/opencv/CaptureRTSPFrame.h             | 137 ----------
 extensions/opencv/MotionDetector.cpp             | 166 ------------
 extensions/opencv/MotionDetector.h               | 112 --------
 extensions/opencv/OpenCVLoader.cpp               |  44 ---
 extensions/opencv/tests/CMakeLists.txt           |  37 ---
 extensions/opencv/tests/CaptureRTSPFrameTest.cpp |  84 ------
 thirdparty/opencv/c++23_fixes.patch              |  23 --
 thirdparty/opencv/windows-install-path.patch     |  34 ---
 win_build_vs.bat                                 |   4 +-
 23 files changed, 16 insertions(+), 1467 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f1d97a507..0ee7632c8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -45,7 +45,6 @@ jobs:
         -DENABLE_LZMA=ON
         -DENABLE_MQTT=ON
         -DENABLE_OPC=ON
-        -DENABLE_OPENCV=ON
         -DENABLE_OPS=ON
         -DENABLE_PROMETHEUS=ON
         -DENABLE_PYTHON_SCRIPTING=ON
@@ -151,7 +150,6 @@ jobs:
         -DENABLE_LZMA=ON
         -DENABLE_MQTT=ON
         -DENABLE_OPC=ON
-        -DENABLE_OPENCV=OFF
         -DENABLE_OPS=ON
         -DENABLE_PDH=ON
         -DENABLE_PROMETHEUS=ON
@@ -254,7 +252,6 @@ jobs:
         -DENABLE_LZMA=ON
         -DENABLE_MQTT=ON
         -DENABLE_OPC=ON
-        -DENABLE_OPENCV=ON
         -DENABLE_OPS=ON
         -DENABLE_PROCFS=ON
         -DENABLE_PROMETHEUS=ON
@@ -399,7 +396,7 @@ jobs:
         run: |
           # rocky build can run out of the github runners' disk space if built 
with RelWithDebInfo so we keep the Release build here
           mkdir build && cd build && cmake -DUSE_SHARED_LIBS=ON -DCI_BUILD=ON 
-DCMAKE_BUILD_TYPE=Release -DSTRICT_GSL_CHECKS=AUDIT 
-DMINIFI_FAIL_ON_WARNINGS=OFF -DENABLE_AWS=ON -DENABLE_AZURE=ON \
-              -DENABLE_ENCRYPT_CONFIG=ON -DENABLE_KAFKA=ON -DENABLE_MQTT=ON 
-DENABLE_OPC=ON -DENABLE_OPENCV=ON -DENABLE_OPS=ON -DENABLE_SQL=ON 
-DENABLE_SYSTEMD=ON \
+              -DENABLE_ENCRYPT_CONFIG=ON -DENABLE_KAFKA=ON -DENABLE_MQTT=ON 
-DENABLE_OPC=ON -DENABLE_OPS=ON -DENABLE_SQL=ON -DENABLE_SYSTEMD=ON \
               -DENABLE_PYTHON_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON 
-DENABLE_KUBERNETES=ON -DENABLE_GCP=ON -DENABLE_PROCFS=ON 
-DENABLE_PROMETHEUS=ON \
               -DENABLE_ELASTICSEARCH=ON -DENABLE_GRAFANA_LOKI=ON 
-DENABLE_LLAMACPP=ON -DDOCKER_SKIP_TESTS=OFF -DDOCKER_BUILD_ONLY=ON 
-DDOCKER_CCACHE_DUMP_LOCATION=${{ env.CCACHE_DIR }} .. && make rocky-test
       - name: cache save
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 96257bf09..9b4b14c67 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -840,7 +840,7 @@ if (MINIFI_ADVANCED_CODE_COVERAGE)
         NAME coverage
         EXCLUDE "build/*" "cmake/*" "minifi_main/*" "thirdparty/*" 
"libminifi/test/*" "encrypt-config/tests/*" "extensions/aws/tests/*"
             "extensions/civetweb/tests/*" "extensions/elasticsearch/tests/*" 
"extensions/gcp/tests/*" "extensions/grafana-loki/tests/*"
-            "extensions/kubernetes/tests/*" "extensions/kafka/tests/*" 
"extensions/lua/tests/*" "extensions/mqtt/tests/*" "extensions/opencv/tests/*" 
"extensions/procfs/tests/*" "extensions/prometheus/tests/*"
+            "extensions/kubernetes/tests/*" "extensions/kafka/tests/*" 
"extensions/lua/tests/*" "extensions/mqtt/tests/*" "extensions/procfs/tests/*" 
"extensions/prometheus/tests/*"
             "extensions/script/tests/*" "extensions/sftp/tests/*" 
"extensions/splunk/tests/*" "extensions/standard-processors/tests/*" 
"extensions/systemd/tests/*" "extensions/test-processors/*"
             "controller/MiNiFiController.cpp"
     )
diff --git a/Extensions.md b/Extensions.md
index 81df822a1..0213d68f1 100644
--- a/Extensions.md
+++ b/Extensions.md
@@ -72,22 +72,25 @@ REGISTER_RESOURCE(HTTPClient, InternalResource);
 REGISTER_RESOURCE(RESTSender, DescriptionOnly);
 ```
 
-Some extensions (e.g. `OpenCVExtension`) require initialization before use.
+Some extensions (e.g. `Python`) require initialization before use.
 You need to define an `MinifiInitCppExtension` function of type 
`MinifiExtension*(MinifiExtensionContext*)` to be called.
 
 ```C++
-extern "C" void MinifiInitCppExtension(MinifiExtensionContext* 
/*extension_context*/) {
-  const auto success = 
org::apache::nifi::minifi::utils::Environment::setEnvironmentVariable("OPENCV_FFMPEG_CAPTURE_OPTIONS",
 "rtsp_transport;udp", false /*overwrite*/);
-  if (!success) {
-    return nullptr;
-  }
+extern "C" void MinifiInitCppExtension(MinifiExtensionContext* 
extension_context) {
+  static PythonLibLoader python_lib_loader([&] (std::string_view key) -> 
std::optional<std::string> {
+    std::optional<std::string> result;
+    MinifiConfigGet(extension_context, minifi::utils::toStringView(key), [] 
(void* user_data, MinifiStringView value) {
+      *static_cast<std::optional<std::string>*>(user_data) = 
std::string{value.data, value.length};
+    }, &result);
+    return result;
+  });
   MinifiExtensionDefinition extension_definition{
     .name = minifi::utils::toStringView(MAKESTRING(MODULE_NAME)),
     .version = minifi::utils::toStringView(minifi::AgentBuild::VERSION),
     .deinit = nullptr,
-    .user_data = nullptr,
+    .user_data = nullptr
   };
-  minifi::utils::MinifiRegisterCppExtension(extension, &extension_definition);
+  minifi::utils::MinifiRegisterCppExtension(extension_context, 
&extension_definition);
 }
 ```
 
diff --git a/LICENSE b/LICENSE
index 520e0ea56..cc46cdf91 100644
--- a/LICENSE
+++ b/LICENSE
@@ -2050,334 +2050,6 @@ express Statement of Purpose.
     party to this document and has no duty or obligation with respect to
     this CC0 or use of the Work.
 
-This product bundles 'OpenCV' which is available under a 3-Clause BSD License:
-
-                          License Agreement
-               For Open Source Computer Vision Library
-                       (3-clause BSD License)
-
-Copyright (C) 2000-2019, Intel Corporation, all rights reserved.
-Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
-Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved.
-Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
-Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved.
-Copyright (C) 2015-2016, Itseez Inc., all rights reserved.
-Copyright (C) 2019, Xperience AI, all rights reserved.
-Third party copyrights are property of their respective owners.
-
-Redistribution and use in source and binary forms, with or without 
modification,
-are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-
-  * Neither the names of the copyright holders nor the names of the 
contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as is" and
-any express or implied warranties, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose are 
disclaimed.
-In no event shall copyright holders or contributors be liable for any direct,
-indirect, incidental, special, exemplary, or consequential damages
-(including, but not limited to, procurement of substitute goods or services;
-loss of use, data, or profits; or business interruption) however caused
-and on any theory of liability, whether in contract, strict liability,
-or tort (including negligence or otherwise) arising in any way out of
-the use of this software, even if advised of the possibility of such damage.
-
-This product bundles 'libjpeg-turbo' within 'OpenCV' under a modified 3-clause 
BSD license:
-Copyright (C)2009-2019 D. R. Commander. All Rights Reserved. Copyright (C)2015 
Viktor Szathmáry. All Rights
-Reserved.
-
-Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the
-following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-   this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
-
- * Neither the name of the libjpeg-turbo Project nor the names of its 
contributors may be used to endorse
-  or promote products derived from this software without specific prior 
written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", 
AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY 
DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
POSSIBILITY OF SUCH DAMAGE.
-
-This product bundles 'libpng' within 'OpenCV' under the following license:
-
-COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
-=========================================
-
-PNG Reference Library License version 2
----------------------------------------
-
- * Copyright (c) 1995-2019 The PNG Reference Library Authors.
- * Copyright (c) 2018-2019 Cosmin Truta.
- * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
- * Copyright (c) 1996-1997 Andreas Dilger.
- * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
-
-The software is supplied "as is", without warranty of any kind,
-express or implied, including, without limitation, the warranties
-of merchantability, fitness for a particular purpose, title, and
-non-infringement.  In no event shall the Copyright owners, or
-anyone distributing the software, be liable for any damages or
-other liability, whether in contract, tort or otherwise, arising
-from, out of, or in connection with the software, or the use or
-other dealings in the software, even if advised of the possibility
-of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute
-this software, or portions hereof, for any purpose, without fee,
-subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
-    must not claim that you wrote the original software.  If you
-    use this software in a product, an acknowledgment in the product
-    documentation would be appreciated, but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must
-    not be misrepresented as being the original software.
-
- 3. This Copyright notice may not be removed or altered from any
-    source or altered source distribution.
-
-
-PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35)
------------------------------------------------------------------------
-
-libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are
-Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
-derived from libpng-1.0.6, and are distributed according to the same
-disclaimer and license as libpng-1.0.6 with the following individuals
-added to the list of Contributing Authors:
-
-    Simon-Pierre Cadieux
-    Eric S. Raymond
-    Mans Rullgard
-    Cosmin Truta
-    Gilles Vollant
-    James Yu
-    Mandar Sahastrabuddhe
-    Google Inc.
-    Vadim Barkov
-
-and with the following additions to the disclaimer:
-
-    There is no warranty against interference with your enjoyment of
-    the library or against infringement.  There is no warranty that our
-    efforts or the library will fulfill any of your particular purposes
-    or needs.  This library is provided with all faults, and the entire
-    risk of satisfactory quality, performance, accuracy, and effort is
-    with the user.
-
-Some files in the "contrib" directory and some configure-generated
-files that are distributed with libpng have other copyright owners, and
-are released under other open source licenses.
-
-libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
-Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
-libpng-0.96, and are distributed according to the same disclaimer and
-license as libpng-0.96, with the following individuals added to the
-list of Contributing Authors:
-
-    Tom Lane
-    Glenn Randers-Pehrson
-    Willem van Schaik
-
-libpng versions 0.89, June 1996, through 0.96, May 1997, are
-Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
-and are distributed according to the same disclaimer and license as
-libpng-0.88, with the following individuals added to the list of
-Contributing Authors:
-
-    John Bowler
-    Kevin Bracey
-    Sam Bushell
-    Magnus Holmgren
-    Greg Roelofs
-    Tom Tanner
-
-Some files in the "scripts" directory have other copyright owners,
-but are released under this license.
-
-libpng versions 0.5, May 1995, through 0.88, January 1996, are
-Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
-
-For the purposes of this copyright and license, "Contributing Authors"
-is defined as the following set of individuals:
-
-    Andreas Dilger
-    Dave Martindale
-    Guy Eric Schalnat
-    Paul Schmidt
-    Tim Wegner
-
-The PNG Reference Library is supplied "AS IS".  The Contributing
-Authors and Group 42, Inc. disclaim all warranties, expressed or
-implied, including, without limitation, the warranties of
-merchantability and of fitness for any purpose.  The Contributing
-Authors and Group 42, Inc. assume no liability for direct, indirect,
-incidental, special, exemplary, or consequential damages, which may
-result from the use of the PNG Reference Library, even if advised of
-the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-source code, or portions hereof, for any purpose, without fee, subject
-to the following restrictions:
-
- 1. The origin of this source code must not be misrepresented.
-
- 2. Altered versions must be plainly marked as such and must not
-    be misrepresented as being the original source.
-
- 3. This Copyright notice may not be removed or altered from any
-    source or altered source distribution.
-
-The Contributing Authors and Group 42, Inc. specifically permit,
-without fee, and encourage the use of this source code as a component
-to supporting the PNG file format in commercial products.  If you use
-this source code in a product, acknowledgment is not required but would
-be appreciated.
-
-
-This product bundles 'libtiff' within 'OpenCV' under a BSD-like licence:
-
-Copyright (c) 1988-1997 Sam Leffler
-Copyright (c) 1991-1997 Silicon Graphics, Inc.
-
-Permission to use, copy, modify, distribute, and sell this software and
-its documentation for any purpose is hereby granted without fee, provided
-that (i) the above copyright notices and this permission notice appear in
-all copies of the software and related documentation, and (ii) the names of
-Sam Leffler and Silicon Graphics may not be used in any advertising or
-publicity relating to the software without the specific, prior written
-permission of Sam Leffler and Silicon Graphics.
-
-THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
-
-
-This product bundles 'libwebp' within 'OpenCV' under a 3-Clause BSD license:
-
-Copyright (c) 2010, Google Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in
-    the documentation and/or other materials provided with the
-    distribution.
-
-  * Neither the name of Google nor the names of its contributors may
-    be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-This product bundles 'quirc' within 'OpenCV' under an ISC license:
-
-quirc -- QR-code recognition library
-Copyright (C) 2010-2012 Daniel Beer <[email protected]>
-
-Permission to use, copy, modify, and/or distribute this software for
-any purpose with or without fee is hereby granted, provided that the
-above copyright notice and this permission notice appear in all
-copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
-AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-This product bundles 'zlib' within 'OpenCV' under the following license:
-
-  Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-  Jean-loup Gailly        Mark Adler
-  [email protected]          [email protected]
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
-  (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
-
-
-This product bundles 'cJSON' within 'AWS SDK for C++' under an MIT license:
-
-Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
 This product bundles 'OpenSSL build files for cmake used for Android Builds' 
within 'AWS SDK for C++' under an MIT license:
 
 Based on original work by David Manura
diff --git a/PROCESSORS.md b/PROCESSORS.md
index cf26f1ff8..9527d7ba5 100644
--- a/PROCESSORS.md
+++ b/PROCESSORS.md
@@ -19,7 +19,6 @@ limitations under the License.
 - [ApplyTemplate](#ApplyTemplate)
 - [AttributeRollingWindow](#AttributeRollingWindow)
 - [AttributesToJSON](#AttributesToJSON)
-- [CaptureRTSPFrame](#CaptureRTSPFrame)
 - [CollectKubernetesPodMetrics](#CollectKubernetesPodMetrics)
 - [CompressContent](#CompressContent)
 - [ConsumeJournald](#ConsumeJournald)
@@ -69,7 +68,6 @@ limitations under the License.
 - [LogAttribute](#LogAttribute)
 - [ManipulateArchive](#ManipulateArchive)
 - [MergeContent](#MergeContent)
-- [MotionDetector](#MotionDetector)
 - [PerformanceDataMonitor](#PerformanceDataMonitor)
 - [PostElasticsearch](#PostElasticsearch)
 - [ProcFsMonitor](#ProcFsMonitor)
@@ -216,54 +214,6 @@ In the list below, the names of required properties appear 
in bold. Any other pr
 | success | All FlowFiles received are routed to success |
 
 
-## CaptureRTSPFrame
-
-### Description
-
-Captures a frame from the RTSP stream at specified intervals.
-
-### Properties
-
-In the list below, the names of required properties appear in bold. Any other 
properties (not in bold) are considered optional. The table also indicates any 
default values, and whether a property supports the NiFi Expression Language.
-
-| Name           | Default Value | Allowable Values | Description              
                                                              |
-|----------------|---------------|------------------|----------------------------------------------------------------------------------------|
-| RTSP Username  |               |                  | The username for 
connecting to the RTSP stream                                         |
-| RTSP Password  |               |                  | Password used to connect 
to the RTSP stream<br/>**Sensitive Property: true**           |
-| RTSP Hostname  |               |                  | Hostname of the RTSP 
stream we are trying to connect to                                |
-| RTSP URI       |               |                  | URI that should be 
appended to the RTSP stream hostname                                |
-| RTSP Port      |               |                  | Port that should be 
connected to to receive RTSP Frames                                |
-| Image Encoding | .jpg          |                  | The encoding that should 
be applied the the frame images captured from the RTSP stream |
-
-### Relationships
-
-| Name    | Description                      |
-|---------|----------------------------------|
-| success | Successful capture of RTSP frame |
-| failure | Failures to capture RTSP frame   |
-
-
-## CollectKubernetesPodMetrics
-
-### Description
-
-A processor which collects pod metrics when MiNiFi is run inside Kubernetes.
-
-### Properties
-
-In the list below, the names of required properties appear in bold. Any other 
properties (not in bold) are considered optional. The table also indicates any 
default values, and whether a property supports the NiFi Expression Language.
-
-| Name                              | Default Value | Allowable Values | 
Description                                                |
-|-----------------------------------|---------------|------------------|------------------------------------------------------------|
-| **Kubernetes Controller Service** |               |                  | 
Controller service which provides Kubernetes functionality |
-
-### Relationships
-
-| Name    | Description                                    |
-|---------|------------------------------------------------|
-| success | All flow files produced are routed to Success. |
-
-
 ## CompressContent
 
 ### Description
@@ -1915,31 +1865,6 @@ In the list below, the names of required properties 
appear in bold. Any other pr
 | merged   | The FlowFile containing the merged content                        
                                                           |
 
 
-## MotionDetector
-
-### Description
-
-Detect motion from captured images.
-
-### Properties
-
-In the list below, the names of required properties appear in bold. Any other 
properties (not in bold) are considered optional. The table also indicates any 
default values, and whether a property supports the NiFi Expression Language.
-
-| Name                           | Default Value | Allowable Values | 
Description                                                                     
          |
-|--------------------------------|---------------|------------------|-------------------------------------------------------------------------------------------|
-| **Image Encoding**             | .jpg          | .jpg<br/>.png    | The 
encoding that should be applied to the output                                   
      |
-| **Minimum Area**               | 100           |                  | We only 
consider the movement regions with area greater than this.                      
  |
-| **Threshold for segmentation** | 42            |                  | Pixel 
greater than this will be white, otherwise black.                               
    |
-| **Dilate iteration**           | 10            |                  | For 
image processing, if an object is detected as 2 separate objects, increase this 
value |
-| **Path to background frame**   |               |                  | If not 
provided then the processor will take the first input frame as background       
   |
-
-### Relationships
-
-| Name    | Description                 |
-|---------|-----------------------------|
-| success | Successful to detect motion |
-| failure | Failure to detect motion    |
-
 ## PerformanceDataMonitor
 
 ### Description
diff --git a/README.md b/README.md
index 422c221db..dc25e3890 100644
--- a/README.md
+++ b/README.md
@@ -92,7 +92,6 @@ The next table outlines CMAKE flags that correspond with 
MiNiFi extensions. Exte
 | Lua Scripting                    | 
[ExecuteScript](PROCESSORS.md#executescript)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
 | MQTT                             | 
[ConsumeMQTT](PROCESSORS.md#consumemqtt)<br/>[PublishMQTT](PROCESSORS.md#publishmqtt)
                                                                                
                                                                                
                                                                                
                                                                                
                                                   [...]
 | OPC                              | 
[FetchOPCProcessor](PROCESSORS.md#fetchopcprocessor)<br/>[PutOPCProcessor](PROCESSORS.md#putopcprocessor)
                                                                                
                                                                                
                                                                                
                                                                                
                               [...]
-| OpenCV                           | 
[CaptureRTSPFrame](PROCESSORS.md#capturertspframe)<br/>[MotionDetector](PROCESSORS.md#motiondetector)
                                                                                
                                                                                
                                                                                
                                                                                
                                   [...]
 | PDH (Windows)                    | 
[PerformanceDataMonitor](PROCESSORS.md#performancedatamonitor)                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
 | ProcFs (Linux)                   | 
[ProcFsMonitor](PROCESSORS.md#procfsmonitor)                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                        [...]
 | Python Scripting                 | 
[ExecuteScript](PROCESSORS.md#executescript)<br/>[**Custom Python 
Processors**](extensions/python/PYTHON.md)                                      
                                                                                
                                                                                
                                                                                
                                                                      [...]
diff --git a/ThirdParties.md b/ThirdParties.md
index 19dd6afad..749bbe05b 100644
--- a/ThirdParties.md
+++ b/ThirdParties.md
@@ -128,7 +128,7 @@ We thrive to build all third party dependencies using the 
[External Projects](ht
 
 There are some exceptions to using External Projects:
  - header only libraries don't require it (you could still use 
ExternalProject_Add to download and unpack the sources, but it is easier to 
just include the source in our repository and create an INTERFACE target from 
them).
- - there are some libraries (notably OpenCV) which generate so many targets in 
so many configurations and interdependencies between the targets that it is 
impractical to use imported library targets with them
+ - there are some libraries which generate so many targets in so many 
configurations and interdependencies between the targets that it is impractical 
to use imported library targets with them
  - there are a few third parties that have not yet been converted to an 
External Project, but they will be, eventually
 
 To add a new built-in dependency, the easiest way is to use an already 
existing one as a template.
diff --git a/Windows.md b/Windows.md
index 7cca69220..592f89d0a 100644
--- a/Windows.md
+++ b/Windows.md
@@ -81,7 +81,6 @@ After the build directory it will take optional parameters 
modifying the CMake c
 | /NO_MQTT             | Disables MQTT extension                               
                              |
 | /NO_LUA_SCRIPTING    | Disables Lua scripting extension                      
                              |
 | /NO_PYTHON_SCRIPTING | Disables Python scripting extension                   
                              |
-| /O                   | Enables OpenCV                                        
                              |
 | /NO_PROMETHEUS       | Disables Prometheus                                   
                              |
 | /RO                  | Use real ODBC driver in tests instead of mock SQL 
driver                            |
 | /M                   | Creates installer with merge modules                  
                              |
@@ -122,7 +121,7 @@ A basic working CMake configuration can be inferred from 
the `win_build_vs.bat`.
 ```
 mkdir build
 cd build
-cmake -G "Visual Studio 17 2022" -A x64 
-DMINIFI_INCLUDE_VC_REDIST_MERGE_MODULES=OFF -DTEST_CUSTOM_WEL_PROVIDER=OFF 
-DENABLE_SQL=OFF -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=OFF 
-DCMAKE_BUILD_TYPE_INIT=Release -DCMAKE_BUILD_TYPE=Release -DWIN32=WIN32 
-DENABLE_KAFKA=OFF -DENABLE_AWS=OFF -DENABLE_PDH= -DENABLE_AZURE=OFF 
-DENABLE_SFTP=OFF -DENABLE_SPLUNK= -DENABLE_GCP= -DENABLE_OPENCV=OFF 
-DENABLE_PROMETHEUS=OFF -DENABLE_ELASTICSEARCH= -DUSE_SHARED_LIBS=OFF 
-DENABLE_CONTROLLER=ON -DENABLE_BUSTACH [...]
+cmake -G "Visual Studio 17 2022" -A x64 
-DMINIFI_INCLUDE_VC_REDIST_MERGE_MODULES=OFF -DTEST_CUSTOM_WEL_PROVIDER=OFF 
-DENABLE_SQL=OFF -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=OFF 
-DCMAKE_BUILD_TYPE_INIT=Release -DCMAKE_BUILD_TYPE=Release -DWIN32=WIN32 
-DENABLE_KAFKA=OFF -DENABLE_AWS=OFF -DENABLE_PDH= -DENABLE_AZURE=OFF 
-DENABLE_SFTP=OFF -DENABLE_SPLUNK= -DENABLE_GCP= -DENABLE_PROMETHEUS=OFF 
-DENABLE_ELASTICSEARCH= -DUSE_SHARED_LIBS=OFF -DENABLE_CONTROLLER=ON 
-DENABLE_BUSTACHE=OFF -DENABLE_ENCRY [...]
 msbuild /m nifi-minifi-cpp.sln /property:Configuration=Release 
/property:Platform=x64
 copy minifi_main\Release\minifi.exe minifi_main\
 cpack
diff --git a/cmake/BundledOpenCV.cmake b/cmake/BundledOpenCV.cmake
deleted file mode 100644
index 855b77913..000000000
--- a/cmake/BundledOpenCV.cmake
+++ /dev/null
@@ -1,223 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-function(use_bundled_opencv SOURCE_DIR BINARY_DIR)
-    if (WIN32)
-        set(LIBDIR "lib")
-    else()
-        include(GNUInstallDirs)
-        string(REPLACE "/" ";" LIBDIR_LIST ${CMAKE_INSTALL_LIBDIR})
-        list(GET LIBDIR_LIST 0 LIBDIR)
-    endif()
-
-    # Define byproducts
-    if (WIN32)
-        set(SUFFIX "4120.lib")
-        set(THIRDPARTY_SUFFIX ".lib")
-        set(PREFIX "")
-        set(THIRDPARTY_DIR "")
-    else()
-        set(SUFFIX ".a")
-        set(THIRDPARTY_SUFFIX ".a")
-        set(PREFIX "lib")
-        set(THIRDPARTY_DIR "opencv4/3rdparty/")
-    endif()
-
-    set(OPENCV_BYPRODUCT_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/opencv-install")
-    set(BYPRODUCTS
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_flann${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_objdetect${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_core${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_gapi${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_imgcodecs${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_calib3d${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_imgproc${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_photo${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_videoio${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_video${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_stitching${SUFFIX}"
-        "${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_features2d${SUFFIX}"
-        
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${THIRDPARTY_DIR}${PREFIX}libjpeg-turbo${THIRDPARTY_SUFFIX}"
-        
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${THIRDPARTY_DIR}${PREFIX}libpng${THIRDPARTY_SUFFIX}")
-
-    # Set build options
-    set(OPENCV_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-            "-DCMAKE_INSTALL_PREFIX=${OPENCV_BYPRODUCT_DIR}"
-            "-DBUILD_SHARED_LIBS=OFF"
-            "-DBUILD_WITH_STATIC_CRT=OFF"
-            "-DBUILD_EXAMPLES=OFF"
-            "-DBUILD_DOCS=OFF"
-            "-DBUILD_PACKAGE=OFF"
-            "-DBUILD_opencv_apps=OFF"
-            "-DBUILD_PERF_TESTS=OFF"
-            "-DBUILD_TESTS=OFF"
-            "-DBUILD_opencv_calib3d=ON"
-            "-DBUILD_opencv_core=ON"
-            "-DBUILD_opencv_dnn=OFF"
-            "-DBUILD_opencv_features2d=ON"
-            "-DBUILD_opencv_flann=ON"
-            "-DBUILD_opencv_gapi=ON"
-            "-DBUILD_opencv_highgui=OFF"
-            "-DBUILD_opencv_imgcodecs=ON"
-            "-DBUILD_opencv_imgproc=ON"
-            "-DBUILD_opencv_ml=OFF"
-            "-DBUILD_opencv_objdetect=ON"
-            "-DBUILD_opencv_photo=ON"
-            "-DBUILD_opencv_stitching=ON"
-            "-DBUILD_opencv_video=ON"
-            "-DBUILD_opencv_videoio=ON"
-            "-DBUILD_JAVA=OFF"
-            "-DBUILD_FAT_JAVA_LIB=OFF"
-            "-DBUILD_PNG=ON"
-            "-DBUILD_JPEG=ON"
-            "-DBUILD_OPENJPEG=OFF"
-            "-DWITH_1394=OFF"
-            "-DWITH_FFMPEG=OFF"
-            "-DWITH_GSTREAMER=OFF"
-            "-DWITH_GTK=OFF"
-            "-DWITH_IPP=OFF"
-            "-DWITH_JASPER=OFF"
-            "-DWITH_ITT=OFF"
-            "-DWITH_OPENEXR=OFF"
-            "-DWITH_WEBP=OFF"
-            "-DWITH_OPENJPEG=OFF"
-            "-DWITH_TIFF=OFF"
-            "-DWITH_CAROTENE=OFF"
-            "-DWITH_PROTOBUF=OFF"
-            "-DWITH_AVIF=OFF"
-            "-DBUILD_ZLIB=OFF"
-    )
-
-    append_third_party_passthrough_args(OPENCV_CMAKE_ARGS 
"${OPENCV_CMAKE_ARGS}")
-
-    set(PATCH_FILE_1 "${SOURCE_DIR}/thirdparty/opencv/c++23_fixes.patch")
-    set(PATCH_FILE_2 
"${SOURCE_DIR}/thirdparty/opencv/windows-install-path.patch")
-    set(PC ${Bash_EXECUTABLE} -c "set -x &&\
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE_1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE_1}\") 
&&\
-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i 
\"${PATCH_FILE_2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE_2}\") ")
-
-
-    # Build project
-    ExternalProject_Add(
-            opencv-external
-            URL 
"https://github.com/opencv/opencv/archive/refs/tags/4.12.0.tar.gz";
-            URL_HASH 
"SHA256=44c106d5bb47efec04e531fd93008b3fcd1d27138985c5baf4eafac0e1ec9e9d"
-            SOURCE_DIR "${BINARY_DIR}/thirdparty/opencv-src"
-            PATCH_COMMAND ${PC}
-            CMAKE_ARGS ${OPENCV_CMAKE_ARGS}
-            BUILD_BYPRODUCTS "${BYPRODUCTS}"
-            EXCLUDE_FROM_ALL TRUE
-            LIST_SEPARATOR % # This is needed for passing semicolon-separated 
lists
-            DOWNLOAD_NO_PROGRESS TRUE
-            TLS_VERIFY TRUE
-    )
-
-    # Set variables
-    set(OPENCV_FOUND "YES" CACHE STRING "" FORCE)
-    if (WIN32)
-        set(OPENCV_INCLUDE_DIR "${OPENCV_BYPRODUCT_DIR}/include" CACHE STRING 
"" FORCE)
-    else()
-        set(OPENCV_INCLUDE_DIR "${OPENCV_BYPRODUCT_DIR}/include/opencv4" CACHE 
STRING "" FORCE)
-    endif()
-    set(OPENCV_LIBRARIES "${BYPRODUCTS}" CACHE STRING "" FORCE)
-
-    # Set exported variables for FindPackage.cmake
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_OPENCV_INCLUDE_DIR=${OPENCV_INCLUDE_DIR}" CACHE STRING "" FORCE)
-    string(REPLACE ";" "%" OPENCV_LIBRARIES_EXPORT "${OPENCV_LIBRARIES}")
-    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_OPENCV_LIBRARIES=${OPENCV_LIBRARIES_EXPORT}" CACHE STRING "" FORCE)
-
-    # Create imported targets
-    file(MAKE_DIRECTORY ${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libjpeg-turbo STATIC IMPORTED)
-    set_target_properties(OPENCV::libjpeg-turbo PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${THIRDPARTY_DIR}${PREFIX}libjpeg-turbo${THIRDPARTY_SUFFIX}")
-    add_dependencies(OPENCV::libjpeg-turbo opencv-external)
-
-    add_library(OPENCV::libpng STATIC IMPORTED)
-    set_target_properties(OPENCV::libpng PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${THIRDPARTY_DIR}${PREFIX}libpng${THIRDPARTY_SUFFIX}")
-    add_dependencies(OPENCV::libpng opencv-external)
-
-    add_library(OPENCV::libopencv-core STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-core PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_core${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-core opencv-external ZLIB::ZLIB)
-    target_include_directories(OPENCV::libopencv-core INTERFACE 
${OPENCV_INCLUDE_DIR})
-    target_link_libraries(OPENCV::libopencv-core INTERFACE ZLIB::ZLIB)
-
-    add_library(OPENCV::libopencv-flann STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-flann PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_flann${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-flann opencv-external)
-    target_include_directories(OPENCV::libopencv-flann INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-objdetect STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-objdetect PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_objdetect${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-objdetect opencv-external)
-    target_include_directories(OPENCV::libopencv-objdetect INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-gapi STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-gapi PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_gapi${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-gapi opencv-external)
-    target_include_directories(OPENCV::libopencv-gapi INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-imgcodecs STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-imgcodecs PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_imgcodecs${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-imgcodecs opencv-external)
-    target_include_directories(OPENCV::libopencv-imgcodecs INTERFACE 
${OPENCV_INCLUDE_DIR})
-    target_link_libraries(OPENCV::libopencv-imgcodecs INTERFACE 
OPENCV::libopencv-core OPENCV::libjpeg-turbo OPENCV::libpng)
-
-    add_library(OPENCV::libopencv-calib3d STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-calib3d PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_calib3d${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-calib3d opencv-external)
-    target_include_directories(OPENCV::libopencv-calib3d INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-imgproc STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-imgproc PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_imgproc${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-imgproc opencv-external)
-    target_include_directories(OPENCV::libopencv-imgproc INTERFACE 
${OPENCV_INCLUDE_DIR})
-    target_link_libraries(OPENCV::libopencv-imgproc INTERFACE 
OPENCV::libopencv-core)
-
-    add_library(OPENCV::libopencv-photo STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-photo PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_photo${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-photo opencv-external)
-    target_include_directories(OPENCV::libopencv-photo INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-videoio STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-videoio PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_videoio${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-videoio opencv-external)
-    target_include_directories(OPENCV::libopencv-videoio INTERFACE 
${OPENCV_INCLUDE_DIR})
-    target_link_libraries(OPENCV::libopencv-videoio INTERFACE 
OPENCV::libopencv-core)
-
-    add_library(OPENCV::libopencv-video STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-video PROPERTIES IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_video${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-video opencv-external)
-    target_include_directories(OPENCV::libopencv-video INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-stitching STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-stitching PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_stitching${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-stitching opencv-external)
-    target_include_directories(OPENCV::libopencv-stitching INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv-features2d STATIC IMPORTED)
-    set_target_properties(OPENCV::libopencv-features2d PROPERTIES 
IMPORTED_LOCATION 
"${OPENCV_BYPRODUCT_DIR}/${LIBDIR}/${PREFIX}opencv_features2d${SUFFIX}")
-    add_dependencies(OPENCV::libopencv-features2d opencv-external)
-    target_include_directories(OPENCV::libopencv-features2d INTERFACE 
${OPENCV_INCLUDE_DIR})
-
-    add_library(OPENCV::libopencv INTERFACE IMPORTED)
-    target_link_libraries(OPENCV::libopencv INTERFACE OPENCV::libopencv-flann 
OPENCV::libopencv-objdetect OPENCV::libopencv-core OPENCV::libopencv-gapi 
OPENCV::libopencv-imgcodecs OPENCV::libopencv-calib3d OPENCV::libopencv-imgproc 
OPENCV::libopencv-photo OPENCV::libopencv-videoio OPENCV::libopencv-video 
OPENCV::libopencv-stitching OPENCV::libopencv-features2d)
-    if (APPLE)
-        target_link_libraries(OPENCV::libopencv INTERFACE "-framework 
AVFoundation" "-framework CoreFoundation" "-framework CoreGraphics" "-framework 
CoreMedia" "-framework CoreVideo" "-framework Foundation" "-framework OpenCL" 
"-framework Accelerate")
-    endif()
-endfunction(use_bundled_opencv)
diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake
index 8fffbff5f..856832617 100644
--- a/cmake/DockerConfig.cmake
+++ b/cmake/DockerConfig.cmake
@@ -64,7 +64,6 @@ add_custom_target(
              -DENABLE_PROMETHEUS=OFF
              -DENABLE_GRPC_FOR_LOKI=OFF
              -DENABLE_PROCFS=OFF
-             -DENABLE_OPENCV=OFF
              -DENABLE_BUSTACHE=OFF
              -DENABLE_SFTP=OFF
              -DENABLE_COUCHBASE=OFF
diff --git a/cmake/MiNiFiOptions.cmake b/cmake/MiNiFiOptions.cmake
index da543b1e6..bad8c4537 100644
--- a/cmake/MiNiFiOptions.cmake
+++ b/cmake/MiNiFiOptions.cmake
@@ -99,7 +99,6 @@ add_minifi_option(ENABLE_KAFKA "Enables the kafka extension." 
ON)
 add_minifi_option(ENABLE_LUA_SCRIPTING "Enables lua scripting" ON)
 add_minifi_option(ENABLE_PYTHON_SCRIPTING "Enables python scripting" ON)
 add_minifi_option(ENABLE_AWS "Enables AWS support." ON)
-add_minifi_option(ENABLE_OPENCV "Enables the OpenCV extensions." OFF)
 add_minifi_option(ENABLE_BUSTACHE "Enables Bustache (ApplyTemplate) support." 
OFF)
 add_minifi_option(ENABLE_SFTP "Enables SFTP support." OFF)
 add_minifi_option(ENABLE_AZURE "Enables Azure support." ON)
diff --git a/cmake/opencv/FindOpenCV.cmake b/cmake/opencv/FindOpenCV.cmake
deleted file mode 100644
index fa0bd4ae6..000000000
--- a/cmake/opencv/FindOpenCV.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Dummy OPENCV find for when we use bundled version
-
-if(NOT OPENCV_FOUND)
-    set(OPENCV_FOUND "YES" CACHE STRING "" FORCE)
-    set(OPENCV_INCLUDE_DIR "${EXPORTED_OPENCV_INCLUDE_DIR}" CACHE STRING "" 
FORCE)
-    set(OPENCV_LIBRARIES ${EXPORTED_OPENCV_LIBRARIES} CACHE STRING "" FORCE)
-    set(OPENCV_VERSION "4.1.0" CACHE STRING "" FORCE)
-endif()
diff --git a/extensions/opencv/CMakeLists.txt b/extensions/opencv/CMakeLists.txt
deleted file mode 100644
index 3c80e3efd..000000000
--- a/extensions/opencv/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-if (NOT (ENABLE_ALL OR ENABLE_OPENCV))
-    return()
-endif()
-
-include(BundledOpenCV)
-use_bundled_opencv(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
-
-include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
-
-file(GLOB SOURCES  "*.cpp")
-
-add_minifi_library(minifi-opencv SHARED ${SOURCES})
-set_target_properties(minifi-opencv PROPERTIES HAS_CUSTOM_INITIALIZER TRUE)
-
-target_link_libraries(minifi-opencv ${LIBMINIFI})
-target_link_libraries(minifi-opencv OPENCV::libopencv)
-
-register_extension(minifi-opencv "OPENCV EXTENSIONS" OPENCV-EXTENSIONS "This 
enables OpenCV support" "extensions/opencv/tests")
diff --git a/extensions/opencv/CaptureRTSPFrame.cpp 
b/extensions/opencv/CaptureRTSPFrame.cpp
deleted file mode 100644
index 19aa01acd..000000000
--- a/extensions/opencv/CaptureRTSPFrame.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "CaptureRTSPFrame.h"
-
-#include "minifi-cpp/core/ProcessContext.h"
-#include "core/ProcessSession.h"
-#include "core/Resource.h"
-
-namespace org::apache::nifi::minifi::processors {
-
-void CaptureRTSPFrame::initialize() {
-  setSupportedProperties(Properties);
-  setSupportedRelationships(Relationships);
-}
-
-void CaptureRTSPFrame::onSchedule(core::ProcessContext& context, 
core::ProcessSessionFactory&) {
-  rtsp_username_ = context.getProperty(RTSPUsername).value_or("");
-  rtsp_password_ = context.getProperty(RTSPPassword).value_or("");
-  rtsp_host_ = context.getProperty(RTSPHostname).value_or("");
-  rtsp_port_ = context.getProperty(RTSPPort).value_or("");
-  rtsp_uri_ = context.getProperty(RTSPURI).value_or("");
-  image_encoding_ = context.getProperty(ImageEncoding).value_or("");
-
-  logger_->log_trace("CaptureRTSPFrame processor scheduled");
-
-  std::string rtspURI = "rtsp://";
-  rtspURI.append(rtsp_username_);
-  rtspURI.append(":");
-  rtspURI.append(rtsp_password_);
-  rtspURI.append("@");
-  rtspURI.append(rtsp_host_);
-  if (!rtsp_port_.empty()) {
-    rtspURI.append(":");
-    rtspURI.append(rtsp_port_);
-  }
-
-  if (!rtsp_uri_.empty()) {
-    rtspURI.append("/");
-    rtspURI.append(rtsp_uri_);
-  }
-
-  rtsp_url_ = rtspURI;
-}
-
-void CaptureRTSPFrame::onTrigger(core::ProcessContext& context, 
core::ProcessSession& session) {
-  std::unique_lock<std::mutex> lock(mutex_, std::try_to_lock);
-  if (!lock.owns_lock()) {
-    logger_->log_info("Cannot process due to an unfinished onTrigger");
-    context.yield();
-    return;
-  }
-
-  try {
-    video_capture_.open(rtsp_url_);
-    video_backend_driver_ = video_capture_.getBackendName();
-  } catch (const cv::Exception &e) {
-    logger_->log_error("Unable to open RTSP stream: {}", e.what());
-    context.yield();
-    return;
-  } catch (...) {
-    logger_->log_error("Unable to open RTSP stream: unhandled exception");
-    context.yield();
-    return;
-  }
-
-  auto flow_file = session.create();
-  cv::Mat frame;
-  // retrieve a frame of your source
-  if (video_capture_.read(frame)) {
-    if (!frame.empty()) {
-      auto t = std::time(nullptr);
-      auto tm = *std::localtime(&t);
-
-      std::ostringstream oss;
-      oss << std::put_time(&tm, "%d-%m-%Y %H-%M-%S");
-      auto filename = oss.str();
-      filename.append(image_encoding_);
-
-      session.putAttribute(*flow_file, "filename", filename);
-      session.putAttribute(*flow_file, "video.backend.driver", 
video_backend_driver_);
-
-      session.write(flow_file, [&frame, this](const 
std::shared_ptr<io::OutputStream>& output_stream) -> io::IoResult {
-        std::vector<uchar> image_buf;
-        imencode(image_encoding_, frame, image_buf);
-        const auto ret = output_stream->write(image_buf.data(), 
image_buf.size());
-        return io::IoResult::from(ret);
-      });
-      session.transfer(flow_file, Success);
-      logger_->log_info("A frame is captured");
-    } else {
-      logger_->log_error("Empty Mat frame received from capture");
-      session.transfer(flow_file, Failure);
-    }
-  } else {
-    logger_->log_error("Unable to read from capture handle on RTSP stream");
-    session.transfer(flow_file, Failure);
-  }
-}
-
-void CaptureRTSPFrame::notifyStop() {
-}
-
-REGISTER_RESOURCE(CaptureRTSPFrame, Processor);
-
-}  // namespace org::apache::nifi::minifi::processors
diff --git a/extensions/opencv/CaptureRTSPFrame.h 
b/extensions/opencv/CaptureRTSPFrame.h
deleted file mode 100644
index 244e22ad7..000000000
--- a/extensions/opencv/CaptureRTSPFrame.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <atomic>
-#include <iomanip>
-#include <ctime>
-#include <vector>
-#include <memory>
-#include <string>
-#include <opencv2/opencv.hpp>
-
-#include "core/logging/LoggerFactory.h"
-#include "core/ProcessorImpl.h"
-#include "core/PropertyDefinitionBuilder.h"
-#include "io/StreamPipe.h"
-#include "minifi-cpp/utils/gsl.h"
-#include "minifi-cpp/utils/Export.h"
-
-namespace org::apache::nifi::minifi::processors {
-
-class CaptureRTSPFrame final : public core::ProcessorImpl {
- public:
-  using ProcessorImpl::ProcessorImpl;
-
-  EXTENSIONAPI static constexpr const char* Description = "Captures a frame 
from the RTSP stream at specified intervals.";
-
-  EXTENSIONAPI static constexpr auto RTSPUsername = 
core::PropertyDefinitionBuilder<>::createProperty("RTSP Username")
-    .withDescription("The username for connecting to the RTSP stream")
-    .build();
-  EXTENSIONAPI static constexpr auto RTSPPassword = 
core::PropertyDefinitionBuilder<>::createProperty("RTSP Password")
-    .withDescription("Password used to connect to the RTSP stream")
-    .isSensitive(true)
-    .build();
-  EXTENSIONAPI static constexpr auto RTSPHostname = 
core::PropertyDefinitionBuilder<>::createProperty("RTSP Hostname")
-    .withDescription("Hostname of the RTSP stream we are trying to connect to")
-    .build();
-  EXTENSIONAPI static constexpr auto RTSPURI = 
core::PropertyDefinitionBuilder<>::createProperty("RTSP URI")
-    .withDescription("URI that should be appended to the RTSP stream hostname")
-    .build();
-  EXTENSIONAPI static constexpr auto RTSPPort = 
core::PropertyDefinitionBuilder<>::createProperty("RTSP Port")
-    .withDescription("Port that should be connected to to receive RTSP Frames")
-    .build();
-  EXTENSIONAPI static constexpr auto ImageEncoding = 
core::PropertyDefinitionBuilder<>::createProperty("Image Encoding")
-    .withDescription("The encoding that should be applied the the frame images 
captured from the RTSP stream")
-    .withDefaultValue(".jpg")
-    .build();
-  EXTENSIONAPI static constexpr auto Properties = 
std::to_array<core::PropertyReference>({
-      RTSPUsername,
-      RTSPPassword,
-      RTSPHostname,
-      RTSPURI,
-      RTSPPort,
-      ImageEncoding
-  });
-
-
-  EXTENSIONAPI static constexpr auto Success = 
core::RelationshipDefinition{"success", "Successful capture of RTSP frame"};
-  EXTENSIONAPI static constexpr auto Failure = 
core::RelationshipDefinition{"failure", "Failures to capture RTSP frame"};
-  EXTENSIONAPI static constexpr auto Relationships = std::array{Success, 
Failure};
-
-  EXTENSIONAPI static constexpr bool SupportsDynamicProperties = false;
-  EXTENSIONAPI static constexpr bool SupportsDynamicRelationships = false;
-  EXTENSIONAPI static constexpr core::annotation::Input InputRequirement = 
core::annotation::Input::INPUT_ALLOWED;
-  EXTENSIONAPI static constexpr bool IsSingleThreaded = false;
-
-  ADD_COMMON_VIRTUAL_FUNCTIONS_FOR_PROCESSORS
-
-  void initialize() override;
-  void onSchedule(core::ProcessContext& context, core::ProcessSessionFactory& 
session_factory) override;
-  void onTrigger(core::ProcessContext& context, core::ProcessSession& session) 
override;
-
-  void notifyStop() override;
-
- private:
-  std::mutex mutex_;
-  std::string rtsp_username_;
-  std::string rtsp_password_;
-  std::string rtsp_host_;
-  std::string rtsp_port_;
-  std::string rtsp_uri_;
-  std::string rtsp_url_;
-  cv::VideoCapture video_capture_;
-  std::string image_encoding_;
-  std::string video_backend_driver_;
-
-//  std::function<int()> f_ex;
-//
-//  std::atomic<bool> running_;
-//
-//  std::unique_ptr<DataHandler> handler_;
-//
-//  std::vector<std::string> endpoints;
-//
-//  std::map<std::string, std::future<int>*> live_clients_;
-//
-//  utils::ThreadPool<int> client_thread_pool_;
-//
-//  moodycamel::ConcurrentQueue<std::unique_ptr<io::Socket>> 
socket_ring_buffer_;
-//
-//  bool stay_connected_;
-//
-//  uint16_t concurrent_handlers_;
-//
-//  int8_t endOfMessageByte;
-//
-//  uint64_t reconnect_interval_;
-//
-//  uint64_t receive_buffer_size_;
-//
-//  uint16_t connection_attempt_limit_;
-//
-//  std::shared_ptr<GetTCPMetrics> metrics_;
-//
-//  // Mutex for ensuring clients are running
-//
-//  std::mutex mutex_;
-//
-//  std::shared_ptr<minifi::controllers::SSLContextService> ssl_service_;
-};
-
-}   // namespace org::apache::nifi::minifi::processors
diff --git a/extensions/opencv/MotionDetector.cpp 
b/extensions/opencv/MotionDetector.cpp
deleted file mode 100644
index 3724ff11e..000000000
--- a/extensions/opencv/MotionDetector.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "MotionDetector.h"
-
-
-#include <utility>
-#include <vector>
-
-#include "minifi-cpp/core/ProcessContext.h"
-#include "core/ProcessSession.h"
-#include "core/Resource.h"
-#include "utils/ProcessorConfigUtils.h"
-
-namespace org::apache::nifi::minifi::processors {
-
-void MotionDetector::initialize() {
-  setSupportedProperties(Properties);
-  setSupportedRelationships(Relationships);
-}
-
-void MotionDetector::onSchedule(core::ProcessContext& context, 
core::ProcessSessionFactory&) {
-  image_encoding_ = context.getProperty(ImageEncoding).value_or("");
-  min_area_ = utils::parseU64Property(context, MinInterestArea);
-  threshold_ = utils::parseU64Property(context, Threshold);
-  dil_iter_ = utils::parseU64Property(context, DilateIter);
-
-
-  if (const auto value = context.getProperty(BackgroundFrame)) {
-    bg_img_ = cv::imread(*value, cv::IMREAD_GRAYSCALE);
-    double scale = IMG_WIDTH / bg_img_.size().width;
-    cv::resize(bg_img_, bg_img_, cv::Size(0, 0), scale, scale);
-    cv::GaussianBlur(bg_img_, bg_img_, cv::Size(21, 21), 0, 0);
-    bg_img_.convertTo(background_, CV_32F);
-  }
-
-  logger_->log_trace("MotionDetector processor scheduled");
-}
-
-bool MotionDetector::detectAndDraw(cv::Mat &frame) {
-  cv::Mat gray;
-  cv::Mat img_diff;
-  cv::Mat thresh;
-  std::vector<cv::Mat> contours;
-
-  logger_->log_trace("Detect and Draw");
-
-  cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY);
-  cv::GaussianBlur(gray, gray, cv::Size(21, 21), 0, 0);
-
-  // Get difference between current frame and background
-  logger_->log_trace("Get difference [{} x {}] [{} x {}]", bg_img_.rows, 
bg_img_.cols, gray.rows, gray.cols);
-  cv::absdiff(gray, bg_img_, img_diff);
-  logger_->log_trace("Apply threshold");
-  cv::threshold(img_diff, thresh, gsl::narrow<double>(threshold_), 255, 
cv::THRESH_BINARY);
-  // Image processing.
-  logger_->log_trace("Dilation");
-  cv::dilate(thresh, thresh, cv::Mat(), cv::Point(-1, -1), 
gsl::narrow<int>(dil_iter_));  // NOLINT(runtime/int,google-runtime-int)
-  cv::findContours(thresh, contours, cv::RETR_EXTERNAL, 
cv::CHAIN_APPROX_SIMPLE);
-
-  // Finish process
-  logger_->log_debug("Draw contours");
-  bool moved = false;
-  for (const auto &contour : contours) {
-    if (const auto area = cv::contourArea(contour); area < 
gsl::narrow<double>(min_area_)) {
-      continue;
-    }
-    moved = true;
-    cv::Rect bbox = cv::boundingRect(contour);
-    cv::rectangle(frame, bbox.tl(), bbox.br(), cv::Scalar(0, 255, 0), 2, 8, 0);
-  }
-  logger_->log_trace("Updating background");
-  if (!moved) {
-    logger_->log_debug("Not moved");
-    // Adaptive background, update background so that the illumnation does not 
affect that much.
-    cv::accumulateWeighted(gray, background_, 0.5);
-    cv::convertScaleAbs(background_, bg_img_);
-  }
-  logger_->log_trace("Finish Detect and Draw");
-  return moved;
-}
-
-void MotionDetector::onTrigger(core::ProcessContext& context, 
core::ProcessSession& session) {
-  std::unique_lock<std::mutex> lock(mutex_, std::try_to_lock);
-  if (!lock.owns_lock()) {
-    logger_->log_info("Cannot process due to an unfinished onTrigger");
-    context.yield();
-    return;
-  }
-
-  auto flow_file = session.get();
-  if (flow_file->getSize() == 0) {
-    logger_->log_info("Empty flow file");
-    return;
-  }
-  cv::Mat frame;
-
-  session.read(flow_file, [&frame](const std::shared_ptr<io::InputStream>& 
input_stream) -> io::IoResult {
-    std::vector<uchar> image_buf;
-    image_buf.resize(input_stream->size());
-    const size_t ret = 
input_stream->read(as_writable_bytes(std::span(image_buf)));
-    if (io::isError(ret) || ret != input_stream->size()) {
-      throw std::runtime_error("ImageReadCallback failed to fully read flow 
file input stream");
-    }
-    frame = cv::imdecode(image_buf, -1);
-    return io::IoResult::from(ret);
-  });
-
-  if (frame.empty()) {
-    logger_->log_error("Empty frame.");
-    session.transfer(flow_file, Failure);
-  }
-
-  double scale = IMG_WIDTH / frame.size().width;
-  cv::resize(frame, frame, cv::Size(0, 0), scale, scale);
-
-  if (background_.empty()) {
-    logger_->log_info("Background is missing, update and yield.");
-    cv::cvtColor(frame, bg_img_, cv::COLOR_BGR2GRAY);
-    cv::GaussianBlur(bg_img_, bg_img_, cv::Size(21, 21), 0, 0);
-    bg_img_.convertTo(background_, CV_32F);
-    return;
-  }
-  logger_->log_trace("Start motion detecting");
-
-  auto t = std::time(nullptr);
-  auto tm = *std::localtime(&t);
-  std::ostringstream oss;
-  oss << std::put_time(&tm, "%Y-%m-%d %H-%M-%S");
-  auto filename = oss.str();
-  filename.append(image_encoding_);
-
-  detectAndDraw(frame);
-
-  session.putAttribute(*flow_file, "filename", filename);
-
-  session.write(flow_file, [&frame, this](const auto& output_stream) -> 
io::IoResult {
-    std::vector<uchar> image_buf;
-    imencode(image_encoding_, frame, image_buf);
-    const auto ret = output_stream->write(image_buf.data(), image_buf.size());
-    return io::IoResult::from(ret);
-  });
-  session.transfer(flow_file, Success);
-  logger_->log_trace("Finish motion detecting");
-}
-
-void MotionDetector::notifyStop() {
-}
-
-REGISTER_RESOURCE(MotionDetector, Processor);
-
-}  // namespace org::apache::nifi::minifi::processors
diff --git a/extensions/opencv/MotionDetector.h 
b/extensions/opencv/MotionDetector.h
deleted file mode 100644
index 469bf5eac..000000000
--- a/extensions/opencv/MotionDetector.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <iomanip>
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "core/logging/LoggerFactory.h"
-#include "core/ProcessorImpl.h"
-#include "minifi-cpp/core/PropertyDefinition.h"
-#include "core/PropertyDefinitionBuilder.h"
-#include "minifi-cpp/core/PropertyValidator.h"
-#include "minifi-cpp/core/RelationshipDefinition.h"
-#include "opencv2/opencv.hpp"
-#include "opencv2/imgproc.hpp"
-
-namespace org::apache::nifi::minifi::processors {
-
-class MotionDetector final : public core::ProcessorImpl {
- public:
-  using ProcessorImpl::ProcessorImpl;
-
-  EXTENSIONAPI static constexpr const char* Description = "Detect motion from 
captured images.";
-
-  EXTENSIONAPI static constexpr auto ImageEncoding = 
core::PropertyDefinitionBuilder<2>::createProperty("Image Encoding")
-      .withDescription("The encoding that should be applied to the output")
-      .isRequired(true)
-      .withAllowedValues({".jpg", ".png"})
-      .withDefaultValue(".jpg")
-      .build();
-  EXTENSIONAPI static constexpr auto MinInterestArea = 
core::PropertyDefinitionBuilder<>::createProperty("Minimum Area")
-      .withDescription("We only consider the movement regions with area 
greater than this.")
-      .isRequired(true)
-      
.withValidator(core::StandardPropertyValidators::UNSIGNED_INTEGER_VALIDATOR)
-      .withDefaultValue("100")
-      .build();
-  EXTENSIONAPI static constexpr auto Threshold = 
core::PropertyDefinitionBuilder<>::createProperty("Threshold for segmentation")
-      .withDescription("Pixel greater than this will be white, otherwise 
black.")
-      .isRequired(true)
-      
.withValidator(core::StandardPropertyValidators::UNSIGNED_INTEGER_VALIDATOR)
-      .withDefaultValue("42")
-      .build();
-  EXTENSIONAPI static constexpr auto DilateIter = 
core::PropertyDefinitionBuilder<>::createProperty("Dilate iteration")
-      .withDescription("For image processing, if an object is detected as 2 
separate objects, increase this value")
-      .isRequired(true)
-      
.withValidator(core::StandardPropertyValidators::UNSIGNED_INTEGER_VALIDATOR)
-      .withDefaultValue("10")
-      .build();
-  EXTENSIONAPI static constexpr auto BackgroundFrame = 
core::PropertyDefinitionBuilder<>::createProperty("Path to background frame")
-      .withDescription("If not provided then the processor will take the first 
input frame as background")
-      .isRequired(true)
-      .withValidator(core::StandardPropertyValidators::NON_BLANK_VALIDATOR)
-      .build();
-  EXTENSIONAPI static constexpr auto Properties = 
std::to_array<core::PropertyReference>({
-      ImageEncoding,
-      MinInterestArea,
-      Threshold,
-      DilateIter,
-      BackgroundFrame
-  });
-
-
-  EXTENSIONAPI static constexpr auto Success = 
core::RelationshipDefinition{"success", "Successful to detect motion"};
-  EXTENSIONAPI static constexpr auto Failure = 
core::RelationshipDefinition{"failure", "Failure to detect motion"};
-  EXTENSIONAPI static constexpr auto Relationships = std::array{Success, 
Failure};
-
-  EXTENSIONAPI static constexpr bool SupportsDynamicProperties = false;
-  EXTENSIONAPI static constexpr bool SupportsDynamicRelationships = false;
-  EXTENSIONAPI static constexpr core::annotation::Input InputRequirement = 
core::annotation::Input::INPUT_ALLOWED;
-  EXTENSIONAPI static constexpr bool IsSingleThreaded = false;
-
-  ADD_COMMON_VIRTUAL_FUNCTIONS_FOR_PROCESSORS
-
-  void initialize() override;
-  void onSchedule(core::ProcessContext& context, core::ProcessSessionFactory& 
session_factory) override;
-  void onTrigger(core::ProcessContext& context, core::ProcessSession& session) 
override;
-
-  void notifyStop() override;
-
- private:
-  bool detectAndDraw(cv::Mat &frame);
-
-  std::mutex mutex_;
-  cv::Mat background_;
-  cv::Mat bg_img_;
-  std::string image_encoding_;
-  uint64_t min_area_{};
-  uint64_t threshold_{};
-  uint64_t dil_iter_{};
-
-  // hardcoded width to 500
-  const double IMG_WIDTH = 500.0;
-};
-
-}  // namespace org::apache::nifi::minifi::processors
diff --git a/extensions/opencv/OpenCVLoader.cpp 
b/extensions/opencv/OpenCVLoader.cpp
deleted file mode 100644
index d74231c26..000000000
--- a/extensions/opencv/OpenCVLoader.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "utils/Environment.h"
-#include "minifi-cpp/agent/agent_version.h"
-#include "minifi-c/minifi-c.h"
-#include "utils/ExtensionInitUtils.h"
-#include "core/Resource.h"
-
-namespace minifi = org::apache::nifi::minifi;
-
-extern "C" void MinifiInitCppExtension(MinifiExtensionContext* 
extension_context) {
-  // By default in OpenCV, ffmpeg capture is hardcoded to use TCP and this is 
a workaround
-  // also if UDP timeout, ffmpeg will retry with TCP
-  // Note:
-  // 1. OpenCV community are trying to find a better approach than setenv.
-  // 2. The command will not overwrite value if 
"OPENCV_FFMPEG_CAPTURE_OPTIONS" already exists.
-  const auto success = 
org::apache::nifi::minifi::utils::Environment::setEnvironmentVariable("OPENCV_FFMPEG_CAPTURE_OPTIONS",
 "rtsp_transport;udp", false /*overwrite*/);
-  if (!success) {
-    return;
-  }
-  MinifiExtensionDefinition extension_definition{
-    .name = minifi::utils::toStringView(MAKESTRING(MODULE_NAME)),
-    .version = minifi::utils::toStringView(minifi::AgentBuild::VERSION),
-    .deinit = nullptr,
-    .user_data = nullptr
-  };
-  minifi::utils::MinifiRegisterCppExtension(extension_context, 
&extension_definition);
-}
diff --git a/extensions/opencv/tests/CMakeLists.txt 
b/extensions/opencv/tests/CMakeLists.txt
deleted file mode 100644
index 870f29c0e..000000000
--- a/extensions/opencv/tests/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-file(GLOB OPENCV_TESTS  "*.cpp")
-
-SET(OPENCV_TEST_COUNT 0)
-
-FOREACH(testfile ${OPENCV_TESTS})
-    get_filename_component(testfilename "${testfile}" NAME_WE)
-    add_minifi_executable("${testfilename}" "${testfile}")
-    target_include_directories(${testfilename} PRIVATE BEFORE 
"${CMAKE_SOURCE_DIR}/extensions/opencv/")
-    target_include_directories(${testfilename} PRIVATE BEFORE 
"${CMAKE_SOURCE_DIR}/extensions/standard-processors")
-    target_link_libraries(${testfilename} minifi-opencv)
-    target_link_libraries(${testfilename} minifi-standard-processors)
-    createTests("${testfilename}")
-    MATH(EXPR OPENCV_TEST_COUNT "${OPENCV_TEST_COUNT}+1")
-    add_test(NAME "${testfilename}" COMMAND "${testfilename}" 
WORKING_DIRECTORY ${TEST_DIR})
-    target_link_libraries(${testfilename} Catch2WithMain)
-    set_tests_properties("${testfilename}" PROPERTIES LABELS 
"opencv;memchecked")
-ENDFOREACH()
-message("-- Finished building ${OPENCV_TEST_COUNT} OpenCV related test 
file(s)...")
diff --git a/extensions/opencv/tests/CaptureRTSPFrameTest.cpp 
b/extensions/opencv/tests/CaptureRTSPFrameTest.cpp
deleted file mode 100644
index 0bf6ed708..000000000
--- a/extensions/opencv/tests/CaptureRTSPFrameTest.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "CaptureRTSPFrame.h"
-
-#include <map>
-#include <memory>
-#include <fstream>
-#include <utility>
-#include <string>
-#include <set>
-#include <iostream>
-
-#include "FlowFile.h"
-#include "core/Core.h"
-#include "unit/TestBase.h"
-#include "unit/Catch.h"
-#include "FlowController.h"
-#include "core/Processor.h"
-#include "processors/LogAttribute.h"
-#include "unit/ProvenanceTestHelper.h"
-
-// TODO(_): valid capture test needs to be fixed
-TEST_CASE("CaptureRTSPFrame::ValidCapture", "[!mayfail]") {
-    TestController testController;
-
-    
LogTestController::getInstance().setTrace<minifi::processors::CaptureRTSPFrame>();
-    LogTestController::getInstance().setDebug<core::ProcessSession>();
-
-    std::shared_ptr<TestPlan> plan = testController.createPlan();
-    auto captureRTSP = plan->addProcessor("CaptureRTSPFrame", 
"CaptureRTSPFrame");
-    // the RTSP url below comes from a public RTSP stream (hopefully still 
alive by the time you read this)
-    // alternatively, we can set our own server using vlc.
-    // vlc -vvv --loop <input video> --sout 
'#rtp{port=1234,sdp=rtsp://127.0.0.1:port/test}' --sout-keep
-    // then the uri will be rtsp://127.0.0.1:port/test
-    plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPHostname, "170.93.143.139");
-    plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPURI, 
"rtplive/470011e600ef003a004ee33696235daa");
-    plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPPort, "");
-    plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::ImageEncoding, ".jpg");
-
-    testController.runSession(plan, true);
-    std::shared_ptr<core::FlowFile> record = plan->getCurrentFlowFile();
-    REQUIRE(record);
-    REQUIRE(LogTestController::getInstance().contains("A frame is captured"));
-}
-
-TEST_CASE("CaptureRTSPFrame::InvalidURI", "[opencvtest2]") {
-  TestController testController;
-
-  
LogTestController::getInstance().setTrace<minifi::processors::CaptureRTSPFrame>();
-  LogTestController::getInstance().setDebug<core::ProcessSession>();
-
-  std::shared_ptr<TestPlan> plan = testController.createPlan();
-  auto captureRTSP = plan->addProcessor("CaptureRTSPFrame", 
"CaptureRTSPFrame");
-
-  plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPHostname, "170.93.143.139");
-  plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPURI, "abcd");
-  plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::RTSPPort, "");
-  plan->setProperty(captureRTSP, 
minifi::processors::CaptureRTSPFrame::ImageEncoding, ".jpg");
-
-  plan->addProcessor(
-          "LogAttribute",
-          "Log",
-          core::Relationship("failure", "description"),
-          true);
-
-  testController.runSession(plan, true);
-  REQUIRE(LogTestController::getInstance().contains("Unable to open RTSP 
stream"));
-}
diff --git a/thirdparty/opencv/c++23_fixes.patch 
b/thirdparty/opencv/c++23_fixes.patch
deleted file mode 100644
index 93052b20f..000000000
--- a/thirdparty/opencv/c++23_fixes.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Subject: [PATCH] c++23 fixes
----
-Index: modules/gapi/src/compiler/gislandmodel.hpp
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/modules/gapi/src/compiler/gislandmodel.hpp 
b/modules/gapi/src/compiler/gislandmodel.hpp
---- a/modules/gapi/src/compiler/gislandmodel.hpp       (revision 
725e440d278aca07d35a5e8963ef990572b07316)
-+++ b/modules/gapi/src/compiler/gislandmodel.hpp       (date 1747828665540)
-@@ -8,8 +8,11 @@
- #ifndef OPENCV_GAPI_GISLANDMODEL_HPP
- #define OPENCV_GAPI_GISLANDMODEL_HPP
- 
--#include <unordered_set>
-+#include <unordered_set> // unordered_map
- #include <memory>        // shared_ptr
-+#include <exception>     // exception_ptr
-+#include <string>        // string
-+#include <cstddef>       // size_t
- 
- #include <ade/graph.hpp>
- #include <ade/typed_graph.hpp>
diff --git a/thirdparty/opencv/windows-install-path.patch 
b/thirdparty/opencv/windows-install-path.patch
deleted file mode 100644
index fb2ce2540..000000000
--- a/thirdparty/opencv/windows-install-path.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/cmake/OpenCVInstallLayout.cmake b/cmake/OpenCVInstallLayout.cmake
-index 25aede72c5..2a9df02b33 100644
---- a/cmake/OpenCVInstallLayout.cmake
-+++ b/cmake/OpenCVInstallLayout.cmake
-@@ -21,18 +21,8 @@ if(ANDROID)
-   ocv_update(OPENCV_JNI_BIN_INSTALL_PATH        "${OPENCV_JNI_INSTALL_PATH}")
- 
- elseif(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
--
--  if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
--    ocv_update(OPENCV_INSTALL_BINARIES_PREFIX 
"${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
--  else()
--    message(STATUS "Can't detect runtime and/or arch")
--    ocv_update(OPENCV_INSTALL_BINARIES_PREFIX "")
--  endif()
--  if(OpenCV_STATIC)
--    ocv_update(OPENCV_INSTALL_BINARIES_SUFFIX "staticlib")
--  else()
--    ocv_update(OPENCV_INSTALL_BINARIES_SUFFIX "lib")
--  endif()
-+  ocv_update(OPENCV_INSTALL_BINARIES_PREFIX "")
-+  ocv_update(OPENCV_INSTALL_BINARIES_SUFFIX "lib")
-   if(INSTALL_CREATE_DISTRIB)
-     set(_jni_suffix "/${OpenCV_ARCH}")
-   else()
-@@ -44,7 +34,7 @@ elseif(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
-   ocv_update(OPENCV_SAMPLES_BIN_INSTALL_PATH   
"${OPENCV_INSTALL_BINARIES_PREFIX}samples")
-   ocv_update(OPENCV_LIB_INSTALL_PATH           
"${OPENCV_INSTALL_BINARIES_PREFIX}${OPENCV_INSTALL_BINARIES_SUFFIX}")
-   ocv_update(OPENCV_LIB_ARCHIVE_INSTALL_PATH   "${OPENCV_LIB_INSTALL_PATH}")
--  ocv_update(OPENCV_3P_LIB_INSTALL_PATH        
"${OPENCV_INSTALL_BINARIES_PREFIX}staticlib")
-+  ocv_update(OPENCV_3P_LIB_INSTALL_PATH        
"${OPENCV_INSTALL_BINARIES_PREFIX}lib")
-   ocv_update(OPENCV_CONFIG_INSTALL_PATH        ".")
-   ocv_update(OPENCV_INCLUDE_INSTALL_PATH       "include")
-   ocv_update(OPENCV_OTHER_INSTALL_PATH         "etc")
diff --git a/win_build_vs.bat b/win_build_vs.bat
index 7d85ed9ed..a0f729513 100644
--- a/win_build_vs.bat
+++ b/win_build_vs.bat
@@ -40,7 +40,6 @@ set enable_splunk=ON
 set enable_smb=ON
 set enable_ops=ON
 set enable_python_scripting=ON
-set enable_opencv=OFF
 set enable_prometheus=ON
 set enable_gcp=ON
 set enable_elastic=ON
@@ -75,7 +74,6 @@ for %%x in (%*) do (
     if [%%~x] EQU [/NO_ELASTIC]       set enable_elastic=OFF
     if [%%~x] EQU [/M]                set installer_merge_modules=ON
     if [%%~x] EQU [/NO_AZURE]         set enable_azure=OFF
-    if [%%~x] EQU [/O]                set enable_opencv=ON
     if [%%~x] EQU [/NO_PROMETHEUS]    set enable_prometheus=OFF
     if [%%~x] EQU [/BUSTACHE]         set enable_bustache=ON
     if [%%~x] EQU [/NO_ENCRYPT_CONFIG] set enable_encrypt_config=OFF
@@ -112,7 +110,7 @@ echo on
 cmake -G %generator% %build_platform_cmd% 
-DMINIFI_INCLUDE_VC_REDIST_MERGE_MODULES=%installer_merge_modules% 
-DTEST_CUSTOM_WEL_PROVIDER=%test_custom_wel_provider% -DENABLE_SQL=%enable_sql% 
-DMINIFI_USE_REAL_ODBC_TEST_DRIVER=%real_odbc% ^
         -DCMAKE_BUILD_TYPE_INIT=%cmake_build_type% 
-DCMAKE_BUILD_TYPE=%cmake_build_type% -DWIN32=WIN32 
-DENABLE_KAFKA=%enable_kafka% ^
         -DENABLE_AWS=%enable_aws% -DENABLE_PDH=%enable_pdh% 
-DENABLE_AZURE=%enable_azure% -DENABLE_SFTP=%enable_sftp% 
-DENABLE_SPLUNK=%enable_splunk% -DENABLE_GCP=%enable_gcp% ^
-        -DENABLE_OPENCV=%enable_opencv% 
-DENABLE_PROMETHEUS=%enable_prometheus% -DENABLE_ELASTICSEARCH=%enable_elastic% 
-DUSE_SHARED_LIBS=OFF -DENABLE_CONTROLLER=OFF  ^
+        -DENABLE_PROMETHEUS=%enable_prometheus% 
-DENABLE_ELASTICSEARCH=%enable_elastic% -DUSE_SHARED_LIBS=OFF 
-DENABLE_CONTROLLER=OFF  ^
         -DENABLE_BUSTACHE=%enable_bustache% 
-DENABLE_ENCRYPT_CONFIG=%enable_encrypt_config% 
-DENABLE_LUA_SCRIPTING=%enable_lua_scripting% -DENABLE_SMB=%enable_smb% ^
         -DENABLE_MQTT=%enable_mqtt% -DENABLE_OPC=%enable_opc% 
-DENABLE_OPS=%enable_ops% ^
         -DENABLE_PYTHON_SCRIPTING=%enable_python_scripting% 
-DENABLE_GRAFANA_LOKI=%enable_grafana_loki% 
-DENABLE_COUCHBASE=%enable_couchbase% ^

Reply via email to