Ich versuche OpenCV zu verwenden, um ein Bild aus Text zu erstellen. Das Bild kann ein Overlay haben oder nicht, das mit ihm verschmolzen werden muss. Die Schriftart des Texts muss anders sein als der HERSHEY-Text, der mit der C++ - Schnittstelle von OpenCV geliefert wird. Ich sah in this post und anderen, dass es mit den cvFontQt und cvAddText getan werden kann.OpenCV: Text wird nicht angezeigt, wenn die Qt-Bibliothek mit cvFontQt und cvAddText unter Windows 10 in VS2015 x64 build
Ich verwende OpenCV 2.4.13 und Qt 5.6. In dem folgenden Beispielcode I die ersten und dritten Zeilen Ausgang cvPutText mit cvFont und HERSHEY jedoch die zweite Leitung unter Verwendung cvAddText mit cvFontQt nicht verwendet, kann nicht angezeigt werden.
#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;
}
Das resultierende Bild ("C: \ OpenCvTest64F.jpg"):
Bin ich cvFontQt cvAddText oder falsch verwenden? Irgendwelche Gedanken darüber, warum es nicht auf dem Bild erscheint?
Vielen Dank Frik !! Das hat den Trick gemacht. Ich stimme zu, die C++ API ist viel schöner. Ich würde es verwenden, wenn ich nicht mono-spaced Schriftart brauchte. – Tom