- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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 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
如果我添加它就消失了
namedWindow("test", WINDOW_AUTOSIZE);
在添加文本之前。
但是,我不明白为什么 qt 或 opencv 需要为此打开一个窗口?我不需要显示图像,我只是用它在图像上放置文本然后保存它,我不想创建任何窗口。
这是我的问题
最佳答案
正如您在 source code 中看到的那样:
CV_IMPL void cvAddText(const CvArr* img, const char* text, CvPoint org, CvFont* font)
{
if (!guiMainThread)
CV_Error( CV_StsNullPtr, "NULL guiReceiver (please create a window)" );
QMetaObject::invokeMethod(guiMainThread,
"putText",
autoBlockingConnection(),
Q_ARG(void*, (void*) img),
Q_ARG(QString,QString::fromUtf8(text)),
Q_ARG(QPoint, QPoint(org.x,org.y)),
Q_ARG(void*,(void*) font));
}
addText 需要一个图形用户界面线程。因为实际绘图发生在该线程中。没有线程,没有函数,没有绘图......
为什么会这样?好吧,因为我想这对某些人来说是有意义的。
它是开源的,您可以随意编写自己的解决方法。否则使用 OpenCV 的 putText。
关于c++ - 如果没有窗口,则 opencv cv::addText 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45116828/
当我使用addText()时,它与align=center(向左或向右)一起工作正常,但是当我尝试使用align=justify时脚本工作没有问题,但是当我尝试打开 .docx 文件时,它给出错误并且
我尝试了 swingwoker ,但它只会更新一次... http://piggyman007.blogspot.com/2010/04/java-swingworker-multithread.ht
我正在尝试为这样的时间线制定规则: 我有一个 QGraphicsView,我在其中放置了一个 QGraphicsScene,我在其中添加了 QGraphicsItems,例如线条和一些标签。 我仅在缩
我设法在从 showGui.UI 导入的 QGraphicsView 中制作了一个垂直文本标签。一切都正是我想要的,除了我不知道如何改变文本颜色。 setStyleSheet 不适用于 QGraphi
本文整理了Java中org.apache.openjpa.persistence.XMLPersistenceMetaDataSerializer.addText()方法的一些代码示例,展示了XMLP
我想使用 python cv2 模块将一些文本应用于图像。我发现了两个可以做到这一点的 cv2 函数 cv2.putText 和 cv2.addText。我想知道各自的优缺点。 谢谢 最佳答案 就像第
我有一个学习 Android 应用程序开发的家庭作业,我需要帮助,我只是一个初学者。在我的代码(我没有写它,它是研究的一部分)中的 onCreate、onSrart、onRestart、onResum
我正在使用 OpenCV 3.2.0 编译,支持 Qt 和函数 cv::addText 将文本放在图像上。这是重现错误的最简单代码 #include #include using namespac
本文整理了Java中org.hl7.fhir.utilities.xhtml.XhtmlNode.addText()方法的一些代码示例,展示了XhtmlNode.addText()的具体用法。这些代码
我是一名优秀的程序员,十分优秀!