首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >弗雷德的Magick脚本TextCleaner与XCode项目的链接

弗雷德的Magick脚本TextCleaner与XCode项目的链接
EN

Stack Overflow用户
提问于 2017-03-01 11:51:35
回答 1查看 470关注 0票数 0

我决定重新表述这个问题。以下是问题所在:

我通过调用: system("/usr/local/bin/textcleaner -e正常化-f 25 -o 10 path to infile“)在c++程序中运行了-f;

但现在我发现了一个错误:

/usr/local/bin/textcleaner:第389行:转换:命令未找到

/usr/local/bin/textcleaner:第400行:[::预期的整数表达式

/usr/local/bin/textcleaner:第403行:转换:未找到命令

/usr/local/bin/textcleaner:第417行:[::预期的整数表达式

/usr/local/bin/textcleaner:第423行:[::预期的整数表达式

/usr/local/bin/textcleaner:第429行:转换:未找到命令

--文件/用户/~/桌面/kimlik/kimlik1.bmp不可读或为零大小--

那么这里有什么问题呢?我用正确的路径给出了一个正确的图像,所以我认为问题不是最后一行,而是textcleaner.exe中的转换命令。如何同时调用textcleaner.exe和convert.exe,即在运行textcleaner.exe时,它知道是什么命令?

EN

回答 1

Stack Overflow用户

发布于 2017-03-01 14:42:13

我不建议从C++应用程序调用外部脚本。您需要考虑路径、加载shell环境和外部错误处理。不是很难做,但我觉得没必要。我认为如果您开发一个C++解决方案,而不是直接与Magick++集成。试试下面的..。

确保您安装了带有ImageMagick支持的Magick++。默认情况下,这通常是启用的。

更新Xcode的构建设置以包含Magick++标志。

  • 在您的终端运行Magick++-config --cxxflags。返回值应在“其他C++标志”选项下复制。
  • 在您的终端运行Magick++-config --libs。返回值应在“其他链接器标志”选项下复制。

Xcode项目现在应该支持Magick++库。

最后,评估弗雷德出色的textcleaner脚本的来源。您应该能够在C++中直接模仿他的技术。

例如。脚本可以生成以下转换命令。

代码语言:javascript
运行
复制
 convert \( $infile -colorspace gray -type grayscale -contrast-stretch 0 \) \
         \( -clone 0 -colorspace gray -negate -lat ${filtersize}x${filtersize}+${offset}% -contrast-stretch 0 \) \
         -compose copy_opacity -composite -fill "$bgcolor" -opaque none  \
         -sharpen 0x1 \ $outfile

可以用类似于..。

代码语言:javascript
运行
复制
#include <Magick++.h>

using namespace Magick;

int main(int argc, const char * argv[]) {
    long
        filtersize = 15,
        offest = 5;
    const char
        * bgcolor = "white",
        * infile  = "wizard:",
        * outfile = "output.png";

    InitializeMagick(argv[0]);
    Image alphaImage(infile);
    alphaImage.colorSpaceType(GRAYColorspace);
    alphaImage.type(GrayscaleType);
    alphaImage.contrastStretch(0, QuantumRange);
    Image betaImage(alphaImage);
    betaImage.negate();
    betaImage.adaptiveThreshold(filtersize, filtersize, offest);
    betaImage.contrastStretch(0, QuantumRange);
    alphaImage.composite(betaImage, 0, 0, CopyAlphaCompositeOp);
    alphaImage.fillColor(Color(bgcolor));
    alphaImage.opaque(Color("none"), Color(bgcolor));
    alphaImage.sharpen();
    alphaImage.write(outfile);
    return 0;
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42530995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档