使用OpenCV putText在图像上打印时出错

时间:2012-02-09 03:19:25

标签: c++ opencv

我正在尝试使用cv::Mat

在图片(cv::putText)上打印文字
string text = "Funny text inside the box";
int fontFace = FONT_HERSHEY_SCRIPT_SIMPLEX;
double fontScale = 2;
int thickness = 3;  
cv::Point textOrg(10, 130);
cv::putText(img, text, textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);

但这会导致运行时出现访问冲突错误。而

cv::putText(img, "text", textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);

导致“??? text”被打印在图像上。知道会出现什么问题吗?

1 个答案:

答案 0 :(得分:6)

我不确定这是什么正确的协议,但我和@arbguy有完全相同的问题,我的修复是因为@ Vlad的评论。从@ Vlad的评论中我检查了我是否在为我的Debug构建使用正确的(调试)库。我不是。将库设置为库的调试版本修复了我的错误,我能够正确使用cv :: putText。这就是我所做的(使用visual studio 2012):

  1. 将我的所有openCV .lib引用设置为“d.lib”版本。根据您使用的库,您的参考资料会有所不同,但这里是我的参考资料:

    opencv_imgproc242d.lib
    opencv_core242d.lib
    opencv_highgui242d.lib
    
  2. 然后我必须将正确的.dll库复制到我的可执行文件目录中。我实际上有一个后期构建步骤,将必要的.dll文件复制到二进制目录中。我还必须复制"tbb_debug.dll"。它位于%OPENCVDIR%\build\common\tbb\ia32\vc10(对于我的32位版本)。我必须复制的.dll文件的最终列表是:     opencv_imgproc242d.dll     opencv_core242d.dll     opencv_highgui242d.dll

  3. 这样做之后一切正常!注意:我不是C ++专家,所以如果有人有更好的建议,我很高兴。此外,我不确定如何正确地归功于@Vlad实际解决这个问题,因为他是那个提出正确解决方案的人。