用此法得到了解决。
3. 另一个运行时异常, Debug时出现:
“Unhandled exception at 0×6c1f4774 (msvcr90.dll) in TestMagick.exe: 0xC0000005: Access violation reading location 0xcccccccc.”
同样在官方论坛上找到答案:是Project属性配置引起的, Project Properties->Configuration Properties->C/C++->Code Generation->Runtime Library, 把Multi-threaded Debug DLL (/MDd)改为Multi-threaded DLL (/MD), 而/MDd是Debug的默认选项. 不过文中提到的有关”_DEBUG”改为”NDEBUG”倒不必.
[转]ImageMagick中文路径名等问题解决
五月 21st, 2009
在C++中使用ImageMagick(简称Magick)处理一些图片, 碰到几个问题并尝试找到了解决方案.
从Magick官方网站下载的ImageMagick-6.5.2-4-Q16-windows-dll.exe, 安装时选上C++开发包. 开发用的IDE是Visual Studio 2008.
1. Magick对中文的路径名支持不是很好, 比如
1 2 |
Image img; img.read("e://头像 小头//小王.jpg"); // 读取失败 |
这种中文路径在OpenCV中是没问题的. 不过Magick并非不支持中文路径名, 只是需要先对中文路径进行utf-8编码. 如下面的转换代码, 在windows下通过MultiByteToWideChar和MultiByteToWideChar实现, 需要包含头文件wtypes.h, 细节可查看MSDN. 在linux下据说可以用iconv实现.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// use utf8 to encode the string and store as char*. Need #include <wtypes.h>. // No |