我使用OpenCV 3.2.0
編譯Qt
支持和功能cv::addText
將文字放在圖像上。下面是重現錯誤opencv 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 Error: Null pointer (NULL guiReceiver (please create a window)) in cvAddText, file /home/vitaly/Documents/opencv/opencv/modules/highgui/src/window_QT.cpp, line 114 terminate called after throwing an instance of 'cv::Exception' what(): /home/vitaly/Documents/opencv/opencv/modules/highgui/src/window_QT.cpp:114: error: (-27) NULL guiReceiver (please create a window) in function cvAddText
它消失,如果我addText前加
namedWindow("test", WINDOW_AUTOSIZE);
最簡單的代碼。
但是,我不明白爲什麼QT或OpenCV需要打開一個窗口?我不需要顯示圖像,我只是使用它來放置圖像上的文本,然後保存它,我不想創建任何窗口。
因此,這裏是我的問題
- 爲什麼是必需的窗口?
- 有沒有辦法解決它? (不創建窗口)
我想你應該試試[putText](http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#puttext) – ZdaR
我試過了。 'putText'的質量很差。 –