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

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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元