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

bsi*_*idd 9 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);
Run Code Online (Sandbox Code Playgroud)

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

cv::putText(img, "text", textOrg, fontFace, fontScale, Scalar::all(255), thickness,8);
Run Code Online (Sandbox Code Playgroud)

导致"??? text"被打印在图像上.什么可能出错?

Jul*_*arz 6

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

  1. 将我的所有openCV .lib引用设置为"d.lib"版本.根据您使用的库,您的参考文献会有所不同,但以下是我的参考资料:

    opencv_imgproc242d.lib
    opencv_core242d.lib
    opencv_highgui242d.lib
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后我不得不将正确的.dll库复制到我的可执行文件目录中.我实际上有一个后期构建步骤,将必要的.dll文件复制到二进制目录中.我也必须复制"tbb_debug.dll".它位于%OPENCVDIR%\build\common\tbb\ia32\vc10(对于我的32位版本).的.dll文件的最终名单我有超过被复制:opencv_imgproc242d.dll opencv_core242d.dll opencv_highgui242d.dll

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