Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ctypes参数传递给C++。dll打印出垃圾值 我写了一个C++ .dll,它包含两个字符数组,初始化OpenCV DNN网络对象并返回它。 //test.cpp #include "test.h" #define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport) using namespace cv; using namespace std; EXTERN_DLL_EXPORT cv::dnn::Net TestCall(char* config_path, char* model_path) { cout << config_path << endl; cout << model_path << endl; cv::dnn::Net net = cv::dnn::readNetFromDarknet((cv::String)config_path, (cv::String)model_path); net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA); net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA); return net; }_Python_C++_Opencv_Ctypes - Fatal编程技术网

Python Ctypes参数传递给C++。dll打印出垃圾值 我写了一个C++ .dll,它包含两个字符数组,初始化OpenCV DNN网络对象并返回它。 //test.cpp #include "test.h" #define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport) using namespace cv; using namespace std; EXTERN_DLL_EXPORT cv::dnn::Net TestCall(char* config_path, char* model_path) { cout << config_path << endl; cout << model_path << endl; cv::dnn::Net net = cv::dnn::readNetFromDarknet((cv::String)config_path, (cv::String)model_path); net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA); net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA); return net; }

Python Ctypes参数传递给C++。dll打印出垃圾值 我写了一个C++ .dll,它包含两个字符数组,初始化OpenCV DNN网络对象并返回它。 //test.cpp #include "test.h" #define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport) using namespace cv; using namespace std; EXTERN_DLL_EXPORT cv::dnn::Net TestCall(char* config_path, char* model_path) { cout << config_path << endl; cout << model_path << endl; cv::dnn::Net net = cv::dnn::readNetFromDarknet((cv::String)config_path, (cv::String)model_path); net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA); net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA); return net; },python,c++,opencv,ctypes,Python,C++,Opencv,Ctypes,然而,我得到了这个意想不到的输出 checkpoints\yolov3_centroid_Oct_2020_40by40_try1.weights **boxes with question marks but I can't represent them*** Traceback (most recent call last): File "centroid_correct.py", line 723, in Correct self.model = self.

然而,我得到了这个意想不到的输出

checkpoints\yolov3_centroid_Oct_2020_40by40_try1.weights
**boxes with question marks but I can't represent them***
Traceback (most recent call last):
  File "centroid_correct.py", line 723, in Correct
    self.model = self.cext.TestCall(self.config_path.encode('utf-8'), self.model_path.encode('utf-8'))
OSError: [WinError -529697949] Windows Error 0xe06d7363
TestCall应该打印出两个输入数组,但只打印模型路径。 但是如果我将TestCall更改为void函数,那么代码似乎可以正常运行

config\yolov3_centroid_Oct_2020_40by40_try1.cfg
checkpoints\yolov3_centroid_Oct_2020_40by40_try1.weights
53012224
为什么当函数是void函数时会正常运行,而当它是cv::dnn:Net函数时会异常运行?这是一个与Cype兼容C++的问题吗?

读取CDLL文档。“默认函数假定返回C int类型。其他返回类型可以通过设置函数对象的ReSype属性来指定。”<代码> CV::DNN::NET是C++类。Python不知道如何使用这些。。至少
checkpoints\yolov3_centroid_Oct_2020_40by40_try1.weights
**boxes with question marks but I can't represent them***
Traceback (most recent call last):
  File "centroid_correct.py", line 723, in Correct
    self.model = self.cext.TestCall(self.config_path.encode('utf-8'), self.model_path.encode('utf-8'))
OSError: [WinError -529697949] Windows Error 0xe06d7363
config\yolov3_centroid_Oct_2020_40by40_try1.cfg
checkpoints\yolov3_centroid_Oct_2020_40by40_try1.weights
53012224