如何链接Fred';s Magick脚本TextCleaner与XCode项目

如何链接Fred';s Magick脚本TextCleaner与XCode项目,xcode,image-processing,imagemagick,ocr,Xcode,Image Processing,Imagemagick,Ocr,我决定重新措辞这个问题。问题是: 我已经通过调用C++程序来运行TraceCurr.EXE 系统(“/usr/local/bin/textcleaner g-e normalize-f 25-o 10[填充路径][输出文件路径]” 但现在我得到了一个错误: /usr/local/bin/textcleaner:第389行:找不到convert:命令 /usr/local/bin/textcleaner:需要第400行:[::整数表达式 /usr/local/bin/textcleaner:第40

我决定重新措辞这个问题。问题是:

<>我已经通过调用C++程序来运行TraceCurr.EXE 系统(“/usr/local/bin/textcleaner g-e normalize-f 25-o 10[填充路径][输出文件路径]”

但现在我得到了一个错误:

/usr/local/bin/textcleaner:第389行:找不到convert:命令

/usr/local/bin/textcleaner:需要第400行:[::整数表达式

/usr/local/bin/textcleaner:第403行:找不到convert:命令

/usr/local/bin/textcleaner:第417行:[::应为整数表达式

/usr/local/bin/textcleaner:第423行:[::应为整数表达式

/usr/local/bin/textcleaner:第429行:找不到convert:命令

--FILE/Users/~/Desktop/kimlik/kimlik1.bmp不可读或大小为零--


那么这里的问题是什么呢?我给出了一个正确的图像和正确的路径,所以我认为问题不在于最后一行,而是在于textcleaner.exe中的convert命令。我如何同时调用textcleaner.exe和convert.exe呢我不建议从C++应用程序调用外部脚本。您需要担心路径、加载shell环境和外部错误处理。确实不难,但我觉得不必要。我认为如果开发C++解决方案,则直接与MAGICK ++集成。试试下面的……/P> 确保已安装带有Magick++支持的ImageMagick。这通常在默认情况下启用

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

  • 代码> Migk++-COFIG---CXXFLASG/<代码>在终端中。返回值应在“其他C++标志”选项下复制。
  • 在终端中运行
    Magick++-config--libs
    。返回值应在“其他链接器标志”选项下复制
Xcode项目现在应该支持Magick++库

最后,评估弗莱德的神奇代码>文本清洁器脚本的来源。你应该能够直接在C++中模仿他的技术。 例如,脚本可能会生成以下convert命令

 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
这可以通过以下方式实现

#包括
使用名称空间Magick;
int main(int argc,const char*argv[]{
长的
filtersize=15,
offest=5;
常量字符
*bgcolor=“白色”,
*infle=“向导:”,
*outfile=“output.png”;
初始化magick(argv[0]);
图像字母图像(infle);
alphaImage.colorSpaceType(灰度颜色空间);
alphaImage.type(灰度类型);
alphaImage.对比度拉伸(0,量程范围);
图像目标(alphaImage);
betaImage.negate();
betaImage.adaptiveThreshold(filtersize,filtersize,offest);
对比度拉伸(0,量程范围);
alphaImage.composite(betaImage,0,0,CopyAlphaCompositeOp);
alphaImage.fillColor(Color(bgcolor));
alphaImage.不透明(颜色(“无”)、颜色(bgcolor));
alphaImage.grip();
alphaImage.write(输出文件);
返回0;
}

它们是脚本,而不是.exe文件,如果你在脚本上使用CHMOD U+X文本清理器,你就可以得到可执行文件。我知道你可以用系统(TeCuff[[参数]输入文件OutPutfile)]调用C++代码中的Exchange版本。。但运行此命令会出现错误:textcleaner:第389行:找不到convert:命令。我想我也需要添加convert可执行文件,但我不知道如何添加。首先:
convert
实用程序不在您的环境
PATH
中。您需要加载shell环境,或者使用
putenv
来重建de>PATH.Second:The
[
字符是一个测试实用程序,不能用作文本字符串。请参阅
man[
了解更多信息。看看我是否理解正确:在.bash/profile中将convert.exe的路径添加到我的路径还不够吗?因为我的路径包括usr/local/bin,其中convert.exe与textcleanerMy一起驻留。我的脚本是bash Unix shell脚本(.sh)而不是Windows可执行文件(.exe)。若要在Windows上运行它,您需要一个Unix环境,如Windows 10 Unix或Cygwin。也不要将Windows转换与Imagemagick转换混淆。大部分脚本只是使用Imagemagick的-lat命令。感谢您提供详细的答案。Magick++库已与我的项目链接。我想通过textcleaner脚本的来源,您可以了解我脚本末尾的convert命令,我发现很难复制,因为它需要对每个图像处理步骤都有很好的理解理论上有可能从C++调用外部脚本吗?我真的想知道为什么我得到了我为什么要得到的错误。但是如果我不能克服这个问题,我会遵循你的建议。你认为下面是TeCuffor的源转换命令:转换-尊重括号。($tmpA1$rotation$rotation$裁剪$makegray$增强)\($clone 0$setcspace-colorspace gray-否定-lat${filtersize}x${filtersize}+${offset}%-对比度拉伸0$模糊)\-合成副本\u不透明度-合成-填充“$bgcolor”-不透明无-alpha关闭\$unrotating$锐化$调制$自适应模糊$修剪$padding填充\$OUFILE