【发布时间】:2017-07-15 09:50:57
【问题描述】:
我正在使用 OpenCV 3.2.0 编译并使用 Qt 支持和函数 cv::addText 将文本放在图像上。这是重现错误的最简单代码
#include <opencv/cv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image, resized;
image = imread(argv[1], IMREAD_COLOR); // Read the file
namedWindow("test", 1);
addText(image, "SomeText", Point(5, 27), fontQt("Times"));
namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
imshow("Display window", image); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
我收到以下错误
/home/vitaly/CLionProjects/opencvTest/cmake-build-debug/opencvTest /home/vitaly/Pictures/img.jpg OpenCV 错误:空指针(NULL guiReceiver(请创建一个窗口))在 cvAddText,文件 /home/vitaly/Documents/opencv/opencv/modules/highgui/src/window_QT.cpp, 在抛出一个实例后调用第 114 行终止 'cv::异常'什么(): /home/vitaly/Documents/opencv/opencv/modules/highgui/src/window_QT.cpp:114: 错误:(-27)NULL guiReceiver(请创建一个窗口)在函数中 cvAddText
如果我添加它就会消失
namedWindow("test", WINDOW_AUTOSIZE);
在添加文本之前。
但是,我不明白为什么 qt 或 opencv 需要为此打开一个窗口?我不需要显示图像,我只是用它在图像上放置文本然后保存它,我不想创建任何窗口。
这是我的问题
- 为什么需要窗口?
- 有解决办法吗? (不创建窗口)
【问题讨论】:
-
我想你应该试试putText
-
我试过了。
putText质量很差。
标签: c++ qt opencv image-processing