2

我正在使用 openCV 在带有 cv::putText 的框架(cv::Mat)上绘制一些文本。但是,输出显示4?=or,?,等​​(每次运行都更改)而不是"Funny text inside the box".

我的(简化)代码:

Mat image = Mat::zeros(imgH,imgW, CV_8UC1);
int fontFace = FONT_HERSHEY_COMPLEX_SMALL;
double fontScale = 1.5;
int thickness = 2;
Point textOrg(imgW/5, imgH/1.2);
string someText = "Funny text inside the box";
putText(image, someText, textOrg, fontFace, fontScale, Scalar::all(255), thickness, 8);

可能是什么问题呢?谢谢!

4

2 回答 2

0

好的,我在同样的问题上苦苦挣扎,最终解决了 OpenCV 库版本 2.4.9.0 rev 1。以下细节适用于 Android 本机活动,但任何平台的总体思路都是相同的。

对于 Android:我首先OPENCV_LIB_TYPE:=STATICAndroid.mk中添加了“”来尝试静态链接库。链接器给出了一堆关于 - 还有什么 - std::string 的错误。然后我碰巧注意到Application.mkAPP_STL := stlport_static中有这一行“ ” 。我不知道它是如何到达那里的,但我将其更改为 " " 并且一切正常。APP_STL := gnustl_static

一般来说:尝试静态链接到 OpenCV 库以暴露错误。然后,您可以跟踪并修复包含和用于 STL 的实际库中的不匹配。

我希望这可以帮助遇到同样问题的其他人。

于 2014-05-06T02:49:59.167 回答
0

你确定你没有对字符串做任何其他事情吗?您的代码似乎运行良好:

简历::putText

这是我运行的完整代码:

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main()
{
    int imgW = 650;
    int imgH = 50;

    Mat image = Mat::zeros(imgH,imgW, CV_8UC1);
    int fontFace = FONT_HERSHEY_COMPLEX_SMALL;
    double fontScale = 1.5;
    int thickness = 2;
    Point textOrg(imgW/5, imgH/1.2);
    string someText = "Funny text inside the box";
    putText(image, someText, textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);

    for(;;){
        imshow("text",image);
        if(waitKey(30) > 0) break;
    }

    return 0;
}
于 2013-02-27T14:39:10.180 回答