【发布时间】:2019-05-03 04:40:12
【问题描述】:
经过长时间的麻烦,我刚刚安装了 openCV 3.2.0。我尝试编写一个程序来加载图像,将其转换为灰度,写入它然后显示两者。问题是每当我尝试运行时
g++ main.cpp -o 输出`pkg-config --cflags --libs opencv`
我得到以下内容
main.cpp: In function ‘int main()’:
main.cpp:14:27: error: ‘COLOR_BGR2GRAY’ was not declared in this scope
cvtColor(image, gImage, COLOR_BGR2GRAY);
^~~~~~~~~~~~~~
main.cpp:14:27: note: suggested alternative: ‘CV_BGR2GRAY’
cvtColor(image, gImage, COLOR_BGR2GRAY);
^~~~~~~~~~~~~~
CV_BGR2GRAY
main.cpp:14:3: error: ‘cvtColor’ was not declared in this scope
cvtColor(image, gImage, COLOR_BGR2GRAY);
^~~~~~~~
main.cpp:14:3: note: suggested alternative: ‘cvCvtColor’
cvtColor(image, gImage, COLOR_BGR2GRAY);
^~~~~~~~
cvCvtColor
我正在阅读 openCV 教程,并且正在阅读我的版本 3.2.0,它正在使用我尝试使用的名称。
这是我的代码:
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main()
{
Mat image = imread("test.jpeg", 1);
Mat gImage;
cvtColor(image, gImage, COLOR_BGR2GRAY);
imwrite("test_gray.jpeg", gImage);
namedWindow("Display image", WINDOW_AUTOSIZE);
imshow("Display image", image);
namedWindow("gray", WINDOW_AUTOSIZE);
imshow("gray", gImage);
waitKey(0);
return 0;
}
我试着跑了
pkg-config --modversion opencv
检查我是否安装了正确版本的 opencv 并按预期返回“3.2.0”。 如果这有任何相关性,我也正在运行 Mint 19.1(我是初学者,所以我不太了解高级用户可能建议/做的事情)
【问题讨论】:
-
pkg-config --cflags --libs不应该在滴答声中吗? -
@WhozCraig 是的,我用记号写了它,但忘记转义了,现在编辑它
-
我认为您缺少包含
#include <opencv2/imgproc.hpp>,您也可以使用包含大部分#include <opencv2/opencv.hpp>的 opencv 标头 -
@api55 是的,我只需要 imgproc.hpp,谢谢!我使用了他们在我的版本的官方文档/教程中包含的相同内容,我想知道为什么他们认为它当时有效。奇怪的。无论如何,再次感谢。
-
我认为它从版本 3.4 -> 4.0 或 3.2 -> 3.4 不是 100% 确定的,但对于 3.2 来说就是这样。