gpt4 book ai didi

linux - STASM-ASM 在 Linux 中不工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:32 25 4
gpt4 key购买 nike

我正在开发一个图像处理项目,我需要定位和标记一些面部属性(即:嘴、 Nose 、眼睛等)。我正在尝试使用 STASM-ASM 算法( http://www.milbo.users.sonic.net/stasm/ ),我已经在之前在 Windows 中完成的项目中使用了该技术,并获得了非常好的结果。

尝试在 Linux 中使用此实用程序时出现问题,我按照作者提供的说明构建了对象 .o 文件。然后,我按照 How to create a static library with g++? 中的说明创建了一个静态库。 。然后,我将此静态库链接到我的项目并包含以下头文件:

// stasm.h

#ifndef STASM_H_
#define STASM_H_
void AsmSearchDll(int *pnlandmarks, int landmarks[], const char image_name[], const char image_data[], const int width, const int height, const int is_color, const char con f_file0[], const char conf_file1[]);

#endif

当尝试构建此项目时,我收到以下错误:

undefined reference to `AsmSearchDll(int*, int*, char const*, char const*, int, int, int, char const*, char const*)'

这对我来说似乎很奇怪,因为我确信头文件已正确包含。我还尝试了作者在包中包含的 .hpp 文件,并获得了完全相同的结果。此问题与 Trying to get stasm to work on Ubuntu 中处理的问题类似。 。但是,该帖子仍然没有最终解决方案。我希望有人能帮助我解决这个问题,STASM-ASM 实用程序确实很棒,遗憾的是它不能在 Linux 中使用,因为它提供了。

我认为问题不在于类型不匹配,这是我在分析 ASMSearchDll 函数的调用及其声明后得出的结论。该函数调用如下:

AsmSearchDll(&nlandmarks, landmarks, image_name, img->imageData, img->width, img->height,1 /* is_color */, NULL /* conf_file0 */, NULL /* conf_file1 */);

函数定义如下:

// stasm_dll.hpp

#ifndef stasm_dll_hpp
#define stasm_dll_hpp

extern "C"
void AsmSearchDll(
int *pnlandmarks, // out: number of landmarks, 0 if can't get landmarks
int landmarks[], // out: the landmarks, caller must allocate
const char image_name[], // in: used in internal error messages, if necessary
const char image_data[], // in: image data, 3 bytes per pixel if is_color
const int width, // in: the width of the image
const int height, // in: the height of the image
const int is_color, // in: 1 if RGB image, 0 for grayscale
const char conf_file0[], // in: 1st config filename, NULL for default
const char conf_file1[]); // in: 2nd config filename, NULL for default, "" if none
#endif // stasm_dll_hpp

此外,如果我更改传递给函数的参数之一的格式,我会收到如下错误:

../src/PruebaStasm.cpp:44:155: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
../src/stasm_dll.hpp:6:6: error: initializing argument 1 of ‘void AsmSearchDll(int*, int*, const char*, const char*, int, int, int, const char*, const char*)’ [-fpermissive]

我使用提供的 makefile 再次编译了 .o 文件,并按照本教程使用这些 .o 文件创建了共享库和动态库:http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

我不明白问题出在哪里。

最诚挚的问候,

路易斯

最佳答案

正如此处所示:

http://www.milbo.users.sonic.net/stasm/minimal.html

您需要调用:

    SHAPE                               // results returned as a SHAPE
AsmSearch(
SHAPE &StartShape, // out: start shape returned in here
DET_PARAMS &DetParams, // out: face detector parameters
double &MeanTime, // out: mean time per image (face det failed excluded)
const RgbImage &RgbImg, // in: find face features in this image
const char sImage[], // in: file path for RgbImg, for err msgs
const bool fRowley=false, // in: true to use VJ detector, else Rowley
const char sConfFile0[]="../data/mu-68-1d.conf", // in: 1st config filename
const char sConfFile1[]="../data/mu-76-2d.conf", // in: 2nd config filename
const char sDataDir[]="../data",// in: data directory
const char sShapeFile[]=NULL, // in: if not NULL then use face detector in here
bool fIssueWarnings=true); // in: true to issue warnings if needed

不知道Linux下是否可以调用AsmSearchDll。

关于linux - STASM-ASM 在 Linux 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com