qq_33837208 2018-09-21 03:15 采纳率: 25%
浏览 2950
已结题

python调用c++函数时怎样传入const char*型的参数?

python代码:


import ctypes
so = ctypes.cdll.LoadLibrary
lib = so("./build/liblandmark.so")
path = "/face/360p/1.jpg"
lib.landmark(1,ctypes.c_char_p(path))


c++代码:
#include
#include
#include
#include

#include "cv.h"
#include "highgui.h"

#include "face_detection.h"
#include "face_alignment.h"

#ifdef _WIN32
std::string DATA_DIR = "../../data/";
std::string MODEL_DIR = "../../model/";
#else
std::string DATA_DIR = "./data/";
std::string MODEL_DIR = "./model/";
#endif
extern "C"
{
seeta::FacialLandmark landmark(int argc, char*argv)
{
// Initialize face detection model
seeta::FaceDetection detector("./build/seeta_fd_frontal_v1.0.bin");
detector.SetMinFaceSize(40);
detector.SetScoreThresh(2.f);
detector.SetImagePyramidScaleFactor(0.8f);
detector.SetWindowStep(4, 4);
// Initialize face alignment model
seeta::FaceAlignment point_detector((MODEL_DIR + "seeta_fa_v1.1.bin").c_str());

//load image
const char* img_path = argv;
IplImage *img_grayscale = NULL;
img_grayscale = cvLoadImage(img_path, 0);

IplImage *img_color = cvLoadImage(img_path,1);
int pts_num = 5;
int im_width = img_grayscale->width;
int im_height = img_grayscale->height;


这里的 const char* img_path 传不进去,应该怎么办。尝试过static_cast强制转换类型,将传入c++的char*类型的数据通过static_cast转换为const char* 但还是不行

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-09-21 03:19
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?