【发布时间】:2016-06-15 23:16:10
【问题描述】:
我正在尝试使用 OpenCV 从文本创建图像。图像可能有也可能没有需要与其合并的叠加层。文本的字体需要与 OpenCV 的 C++ 接口自带的 HERSHEY 文本不同。我在this post 和其他人看到它可以使用 cvFontQt 和 cvAddText 来完成。
我正在使用 OpenCV 2.4.13 和 Qt 5.6。在下面的示例代码中,我可以使用 cvPutText 和 cvFont 和 HERSHEY 输出第一行和第三行,但是第二行使用 cvAddText 和 cvFontQt 不显示。
#include "stdafx.h"
#include "opencv2\core\core_c.h"
#include "opencv2\highgui\highgui_c.h"
int main()
{
// Create a window for a container to hold the image
cvNamedWindow("cvtest", CV_WINDOW_AUTOSIZE);
IplImage *img = cvCreateImage(cvSize(600, 300), IPL_DEPTH_64F, 4);
// Set the image background to white
cvSet(img, cvScalar(255, 255, 255));
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5);
cvPutText(img, "cvInitFont; cvPutText: First line.", cvPoint(4, 30), &font, cvScalar(255));
CvFont fontqt = cvFontQt("Courier New", -1, cvScalar(0,0,255), CV_FONT_NORMAL, CV_STYLE_NORMAL, 0);
cvAddText(img, "cvFontQV; cvAddText: Second line.", cvPoint(4, 60), &fontqt);
cvPutText(img, "cvInitFont; cvPutText: Third line.", cvPoint(4, 90), &font, cvScalar(255));
cvShowImage("cvtest", img);
cvWaitKey(0);
cvSaveImage("C:\\OpenCvTest64F.jpg", img);
// Cleanup
cvDestroyAllWindows();
cvReleaseImage(&img);
return 0;
}
生成的图像(“C:\OpenCvTest64F.jpg”):
我是否错误地使用了 cvFontQt 或 cvAddText?关于为什么它没有出现在图像中的任何想法?
【问题讨论】: