OpenCV4 error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scope
Asked Answered
U

1

15

I recently migrated from OpenCV3.3 to the latest version OpenCV4 on my Ubuntu 18.04 LTS. I have some persistent issues with the installation. My installation did not give any errors when I followed this installation tutorial. But whenever I include the module opencv2/highgui.hpp in my project, I get problems like below. This seems to be an issue caused by highgui.hpp when I followed this link.

/home/arun/Documents/AutonomousLaneDetection/app/main.cpp: In function ‘int main(int, char**)’:
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:118:36: error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scope
 int videoWidth = videofile.get(CV_CAP_PROP_FRAME_WIDTH);
                                ^~~~~~~~~~~~~~~~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:119:37: error: ‘CV_CAP_PROP_FRAME_HEIGHT’ was not declared in this scope
 int videoHeight = videofile.get(CV_CAP_PROP_FRAME_HEIGHT);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:123:27: error: ‘CV_FOURCC’ was not declared in this scope
                       CV_FOURCC('M', 'J', 'P', 'G'), 10,
                       ^~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:123:27: note: suggested alternative: ‘CV_BLUR’
                       CV_FOURCC('M', 'J', 'P', 'G'), 10,
                       ^~~~~~~~~
                       CV_BLUR
Underprop answered 13/6, 2019 at 2:39 Comment(1)
OpenCV 3.4 is not OpenCV 4. There is no "AKA." OpenCV has both versions, and they are separate.Geniality
G
25

Those constants have been changed in name and location in OpenCV for some time now.

For the capture properties, they no longer begin with CV_, so remove that prefix from all of them. You can find a list of all available capture properties here, note that they all simply start with CAP_PROP_.

The FOURCC code constructor is a method on the VideoWriter class now, so you should use VideoWriter::fourcc(...). The docs can be found here.

Geniality answered 13/6, 2019 at 2:53 Comment(1)
In addition to that, namespace should be stated at start of the class(Ex: "using namespace cv;") or it should be put before the enum (Ex: cv::CAP_PROP_FRAME_HEIGHT).Meekins

© 2022 - 2024 — McMap. All rights reserved.