nareshmlx/opencv-pr huggingface dataset:
**File:** modules/dnn/src/layer.cpp
**Change Type:** modified
**Context:** PR #22634: dnn: add the CANN backend
**Review Line:** 90

**Code Changes:**
```diff
 }
 
+Ptr<BackendNode> Layer::initCann(const std::vector<Ptr<BackendWrapper> > &inputsWrapper, const int index, const std::vector<Ptr<BackendNode> >& nodes)
+{
+    CV_Error(Error::StsNotImplemented, "CANN pipeline of " + type + " layers is not defined.");
+    return Ptr<BackendNode>();
+}
+
 Ptr<BackendNode> Layer::tryAttach(const Ptr<BackendNode>& node)
 {
     return Ptr<BackendNode>();
```

Review comment:
This will be useful if we have the graph split. We still need to keep it though for inheritance, don't we?
**File:** modules/dnn/src/layer.cpp
**Change Type:** modified
**Context:** PR #22634: dnn: add the CANN backend
**Review Line:** 90

**Code Changes:**
```diff
 }
 
+Ptr<BackendNode> Layer::initCann(const std::vector<Ptr<BackendWrapper> > &inputsWrapper, const int index, const std::vector<Ptr<BackendNode> >& nodes)
+{
+    CV_Error(Error::StsNotImplemented, "CANN pipeline of " + type + " layers is not defined.");
+    return Ptr<BackendNode>();
+}
+
 Ptr<BackendNode> Layer::tryAttach(const Ptr<BackendNode>& node)
 {
     return Ptr<BackendNode>();
```

Review comment:
`CV_Error()` throws exception unconditionally. Code after that line is dead. There is no question about inheritance.
**File:** modules/dnn/src/layer.cpp
**Change Type:** modified
**Context:** PR #22634: dnn: add the CANN backend
**Review Line:** 90

**Code Changes:**
```diff
 }
 
+Ptr<BackendNode> Layer::initCann(const std::vector<Ptr<BackendWrapper> > &inputsWrapper, const int index, const std::vector<Ptr<BackendNode> >& nodes)
+{
+    CV_Error(Error::StsNotImplemented, "CANN pipeline of " + type + " layers is not defined.");
+    return Ptr<BackendNode>();
+}
+
 Ptr<BackendNode> Layer::tryAttach(const Ptr<BackendNode>& node)
 {
     return Ptr<BackendNode>();
```

Review comment:
I just followed what other backends do. I can do the change though in later tonight.
**File:** modules/dnn/src/layer.cpp
**Change Type:** modified
**Context:** PR #22634: dnn: add the CANN backend
**Review Line:** 90

**Code Changes:**
```diff
 }
 
+Ptr<BackendNode> Layer::initCann(const std::vector<Ptr<BackendWrapper> > &inputsWrapper, const int index, const std::vector<Ptr<BackendNode> >& nodes)
+{
+    CV_Error(Error::StsNotImplemented, "CANN pipeline of " + type + " layers is not defined.");
+    return Ptr<BackendNode>();
+}
+
 Ptr<BackendNode> Layer::tryAttach(const Ptr<BackendNode>& node)
 {
     return Ptr<BackendNode>();
```

Review comment:
OK. This should be fixed separately then for all cases.
**File:** modules/dnn/src/layers/blank_layer.cpp
**Change Type:** modified
**Context:** PR #25739: Fixed blank layer for OpenVINO 2022.1
**Review Line:** 169

**Code Changes:**
```diff
+        // We use Reshape as blank layer.
+        // Previously, we used Concat layer, but it didn't work with scalar tensor.
+        // Also we used ConvertLike layer, but it did't work with old OpenVINO versions.
+        auto shape = std::make_shared<ov::op::v0::ShapeOf>(ieInpNode);
+        auto blank = std::make_shared<ov::op::v1::Reshape>(ieInpNode, shape, false);
         return Ptr<BackendNode>(new InfEngineNgraphNode(blank));
     }
 #endif  // HAVE_DNN_NGRAPH
```

Review comment:
May be just return `ieInpNode` without any "operations".
**File:** modules/dnn/src/layers/blank_layer.cpp
**Change Type:** modified
**Context:** PR #25739: Fixed blank layer for OpenVINO 2022.1
**Review Line:** 169

**Code Changes:**
```diff
+        // We use Reshape as blank layer.
+        // Previously, we used Concat layer, but it didn't work with scalar tensor.
+        // Also we used ConvertLike layer, but it did't work with old OpenVINO versions.
+        auto shape = std::make_shared<ov::op::v0::ShapeOf>(ieInpNode);
+        auto blank = std::make_shared<ov::op::v1::Reshape>(ieInpNode, shape, false);
         return Ptr<BackendNode>(new InfEngineNgraphNode(blank));
     }
 #endif  // HAVE_DNN_NGRAPH
```

Review comment:
Unfortunately, that won't work and workaround is to create a dummy node. I've checked that nGraph usually removes such kind of nodes as a part of middle graph processing (like identical Reshape, ConvertLike to the same type and so on).
**File:** modules/dnn/include/opencv2/dnn/dnn.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 74

**Code Changes:**
```diff
         //! DNN_BACKEND_DEFAULT equals to OPENCV_DNN_BACKEND_DEFAULT, which can be defined using CMake or a configuration parameter
         DNN_BACKEND_DEFAULT = 0,
-        DNN_BACKEND_HALIDE,
-        DNN_BACKEND_INFERENCE_ENGINE,            //!< Intel OpenVINO computational backend
-                                                 //!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
+        DNN_BACKEND_INFERENCE_ENGINE = 2,            //!< Intel OpenVINO computational backend
+                                                     //!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
         DNN_BACKEND_OPENCV,
         DNN_BACKEND_VKCOM,
         DNN_BACKEND_CUDA,
@@ -314,18 +313,6 @@ CV__DNN_INLINE_NS_BEGIN
```

Review comment:
Please assign values to other enumerations so removing `DNN_BACKEND_HALIDE` won't break them.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
Might break the tests. Can we just check for `CV_Assert(!withHalide`)?
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
I can review every location where `dnnBackendsAndTargets` is used, and make changes if needed. Let me try.
**File:** modules/dnn/include/opencv2/dnn/dnn.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 74

**Code Changes:**
```diff
         //! DNN_BACKEND_DEFAULT equals to OPENCV_DNN_BACKEND_DEFAULT, which can be defined using CMake or a configuration parameter
         DNN_BACKEND_DEFAULT = 0,
-        DNN_BACKEND_HALIDE,
-        DNN_BACKEND_INFERENCE_ENGINE,            //!< Intel OpenVINO computational backend
-                                                 //!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
+        DNN_BACKEND_INFERENCE_ENGINE = 2,            //!< Intel OpenVINO computational backend
+                                                     //!< @note Tutorial how to build OpenCV with OpenVINO: @ref tutorial_dnn_openvino
         DNN_BACKEND_OPENCV,
         DNN_BACKEND_VKCOM,
         DNN_BACKEND_CUDA,
@@ -314,18 +313,6 @@ CV__DNN_INLINE_NS_BEGIN
```

Review comment:
I set `DNN_BACKEND_INFERENCE_ENGINE = 2,` to keep compatibility.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
All `dnnBackendsAndTargets` called with parameters should be taken well care now.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
> I can review every location This is not one time activity. In case of parameter change we need to review each of "(5.x) Merge 4.x" PRs. It is much safer to rename this parameter to `bool obsolete_withHalide = false`.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
So how can we completely remove that in this case?
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
I think we can resolve this thread. The latest commits provide compatible removal of `withHalide` flag from `dnnBackendsAndTargets`.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
Again, fixing it here will not resolve merging 4.x->5.x issues (no errors would be raised in the most part of cases) which would lead to mistakes.
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
So how about removing the parameter from 4.x like what we want to do with `modules/dnn/test/test_halide_layers.cpp`? Does this address your concern?
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
So how do we do for this issue?
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
Series of boolean parameters is anti-pattern, especially in form with optional default values. Any obvious refactoring is dangerous here, especially in case of regular merges between branches. > It is much safer to rename this parameter to `bool obsolete_withHalide = false`
**File:** modules/dnn/test/test_common.hpp
**Change Type:** modified
**Context:** PR #24231: dnn: cleanup of halide backend for 5.x
**Review Line:** 140

**Code Changes:**
```diff
 
 testing::internal::ParamGenerator< tuple<Backend, Target> > dnnBackendsAndTargets(
         bool withInferenceEngine = true,
-        bool withHalide = false,
+        bool obsolete_withHalide = false, // this is kept for compatibility
         bool withCpuOCV = true,
         bool withVkCom = true,
         bool withCUDA = true,
```

Review comment:
> It is much safer to rename this parameter to bool obsolete_withHalide = false Okay, I will do this. I guess we can safely remove this legacy once our main dev branch switches to 5.x, right?
**File:** samples/dnn/models.yml
**Change Type:** modified
**Context:** PR #25775: Add yolov8l.onnx to samples
**Review Line:** 79

**Code Changes:**
```diff
@@ -76,6 +76,20 @@ yolov8m:
   background_label_id: 0
   sample: "yolo_detector"
 
+yolov8l:
+  load_info:
+    url: "https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov8l.onnx"
+    sha1: "462df53ca3a85d110bf6be7fc2e2bb1277124395"
+  model: "yolov8l.onnx"
+  mean: 0.0
```

Review comment:
``` opencv-master/samples/dnn$ python3 ./download_models.py yolov8l DownloadInstance <opencv_face_detector_fp16> DownloadInstance <opencv_face_detector_uint8> DownloadInstance <opencv_fd> DownloadInstance <yolov8x> DownloadInstance <yolov8s> DownloadInstance <yolov8n> DownloadInstance <yolov8m> DownloadInstance <yolov8l> Model: yolov8l Working on yolov8l Getting file yolov8l.onnx expected SHA1: 5c5cc8ad7ab50973a84444bae4e613065a479ea1 there is already a file with the same name actual SHA1:462df53ca3a85d110bf6be7fc2e2bb1277124395 hash didn't match, loading file hash check failed - loading Preparing to download file yolov8l.onnx expected SHA1: 5c5cc8ad7ab50973a84444bae4e613065a479ea1 there is already a file with the same name actual SHA1:462df53ca3a85d110bf6be7fc2e2bb1277124395 200 OK [166.78626346588135 Mb] progress >>>>>>>>>>>>>>>>> Downloaded yolov8l.onnx with size 166.78626346588135 Mb expected SHA1: 5c5cc8ad7ab50973a84444bae4e613065a479ea1 there is already a file with the same name actual SHA1:462df53ca3a85d110bf6be7fc2e2bb1277124395 There was some problem with loading file yolov8l.onnx for yolov8l Exception: Hash mismatch: expected 5c5cc8ad7ab50973a84444bae4e613065a479ea1 vs actual of 462df53ca3a85d110bf6be7fc2e2bb1277124395 ```
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #25661: Highgui backend on top of Framebuffer
**Review Line:** 307

**Code Changes:**
```diff
@@ -304,6 +304,10 @@ OCV_OPTION(WITH_GTK "Include GTK support" ON
 OCV_OPTION(WITH_GTK_2_X "Use GTK version 2" OFF
   VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
   VERIFY HAVE_GTK AND NOT HAVE_GTK3)
+OCV_OPTION(WITH_FRAMEBUFFER "Include framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
+OCV_OPTION(WITH_FRAMEBUFFER_XVFB "Include virtual framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
 OCV_OPTION(WITH_WAYLAND "Include Wayland support" OFF
         VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
```

Review comment:
We can set it to "ON" temporarily in order to enable build on CI.
**File:** modules/highgui/src/window_framebuffer.hpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,135 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#ifndef OPENCV_HIGHGUI_WINDOWS_FRAMEBUFFER_HPP
+#define OPENCV_HIGHGUI_WINDOWS_FRAMEBUFFER_HPP
+
+#include "backend.hpp"
+
```

Review comment:
`getName` from the base class is not implemented. https://github.com/opencv/opencv/blob/d8f0838fa35b879e24196feafbf9dd1d683f0af0/modules/highgui/src/backend.hpp#L109
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer
**Review Line:** 130

**Code Changes:**
```diff
+            {
+                Mat tmp(img.rows, img.cols, CV_8UC3);
+                convertToShow(img, tmp, true);
+                img = tmp;
+            }
+            break;
+        default:
+            CV_Error(cv::Error::StsBadArg, "Bad image: wrong number of channels");
+    }
+    {
+        Mat bgra(img.rows, img.cols, CV_8UC4);
```

Review comment:
default section with assert is needed.
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
XWDFileHeader* xwd_header = (XWDFileHeader*) mmap(NULL, sizeof(XWDFileHeader), PROT_READ, MAP_SHARED, fb_fd, 0);
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer
**Review Line:** 130

**Code Changes:**
```diff
+            {
+                Mat tmp(img.rows, img.cols, CV_8UC3);
+                convertToShow(img, tmp, true);
+                img = tmp;
+            }
+            break;
+        default:
+            CV_Error(cv::Error::StsBadArg, "Bad image: wrong number of channels");
+    }
+    {
+        Mat bgra(img.rows, img.cols, CV_8UC4);
```

Review comment:
default section added
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
fixed style in all code
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #25661: Highgui backend on top of Framebuffer
**Review Line:** 307

**Code Changes:**
```diff
@@ -304,6 +304,10 @@ OCV_OPTION(WITH_GTK "Include GTK support" ON
 OCV_OPTION(WITH_GTK_2_X "Use GTK version 2" OFF
   VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
   VERIFY HAVE_GTK AND NOT HAVE_GTK3)
+OCV_OPTION(WITH_FRAMEBUFFER "Include framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
+OCV_OPTION(WITH_FRAMEBUFFER_XVFB "Include virtual framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
 OCV_OPTION(WITH_WAYLAND "Include Wayland support" OFF
         VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
```

Review comment:
the flag value is replaced with "ON"
**File:** modules/highgui/src/window_framebuffer.hpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,135 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#ifndef OPENCV_HIGHGUI_WINDOWS_FRAMEBUFFER_HPP
+#define OPENCV_HIGHGUI_WINDOWS_FRAMEBUFFER_HPP
+
+#include "backend.hpp"
+
```

Review comment:
the method appeared after the fork I synchronized my fork and added a method implementation
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
LOG info is redundant here. The following warning will be shown anyway.
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
the same for log info.
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
Why not just VGA? It's more common in cv.
**File:** modules/highgui/src/window_framebuffer.cpp
**Change Type:** added
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -0,0 +1,798 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "precomp.hpp"
+
+#include "window_framebuffer.hpp"
+
+#include <opencv2/core/utils/configuration.private.hpp>
```

Review comment:
changed the resolution to 640x480
**File:** CMakeLists.txt
**Change Type:** modified
**Context:** PR #25661: Highgui backend on top of Framebuffer

**Code Changes:**
```diff
@@ -304,6 +304,10 @@ OCV_OPTION(WITH_GTK "Include GTK support" ON
 OCV_OPTION(WITH_GTK_2_X "Use GTK version 2" OFF
   VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
   VERIFY HAVE_GTK AND NOT HAVE_GTK3)
+OCV_OPTION(WITH_FRAMEBUFFER "Include framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
+OCV_OPTION(WITH_FRAMEBUFFER_XVFB "Include virtual framebuffer support" OFF
+  VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID)
 OCV_OPTION(WITH_WAYLAND "Include Wayland support" OFF
         VISIBLE_IF UNIX AND NOT APPLE AND NOT ANDROID
```

Review comment:
Please revert this option back to OFF.