Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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
在C++;程序(单张图片可以,但在网络摄像头上失败) 我的生存是为了使我的C++程序能够嵌入Python脚本,这样我就可以在外部修改图像处理代码。_Python_C++_Opencv - Fatal编程技术网

在C++;程序(单张图片可以,但在网络摄像头上失败) 我的生存是为了使我的C++程序能够嵌入Python脚本,这样我就可以在外部修改图像处理代码。

在C++;程序(单张图片可以,但在网络摄像头上失败) 我的生存是为了使我的C++程序能够嵌入Python脚本,这样我就可以在外部修改图像处理代码。,python,c++,opencv,Python,C++,Opencv,我已经设法使它可以在一张图片上运行 但当我试图捕捉连续的图片并执行图像处理时,它失败了 你能帮我一下吗 我的环境是: Windows10,Python版本:3.8.1(32位)和相应的numpy Visual Studio 2019 v16.4.3[vcvarsall.bat]环境已初始化为:“x86” Qt creator 5.14(MSVC 2017,32位)及其qmake作为我的IDE 以下是我的源代码 Qt项目文件:testPyScript.pro QT-=gui CONFIG+=c

我已经设法使它可以在一张图片上运行

但当我试图捕捉连续的图片并执行图像处理时,它失败了

你能帮我一下吗

我的环境是:

  • Windows10,Python版本:3.8.1(32位)和相应的numpy
  • Visual Studio 2019 v16.4.3[vcvarsall.bat]环境已初始化为:“x86”
  • Qt creator 5.14(MSVC 2017,32位)及其qmake作为我的IDE
以下是我的源代码

Qt项目文件:testPyScript.pro

QT-=gui
CONFIG+=c++11控制台
配置-=应用程序包
#如果使用以下定义,编译器将发出警告
#任何标记为不推荐的Qt功能(确切的警告
#取决于您的编译器)。请查阅该文件
#不推荐使用的API,以便了解如何将代码移植到它之外。
定义+=QT\u不推荐的\u警告
#如果代码使用了不推荐使用的API,还可能导致代码无法编译。
#为此,请取消对以下行的注释。
#您还可以选择仅在Qt的某个版本中禁用不推荐的API。
#定义+=QT_DISABLE_DEPRECATED_BEFORE=0x060000#禁用QT 6.0.0之前不推荐使用的所有API
来源+=\
Python_wrapper.cpp\
main.cpp
#部署的默认规则。
qnx:target.path=/tmp/$${target}/bin
其他:unix:!android:target.path=/opt/${target}/bin
!isEmpty(target.path):安装+=target
标题+=\
Python_wrapper.h
#蟒蛇
INCLUDEPATH+=“C:/Python/Python38-32/include”
LIBS+=-L“C:/Python/Python38-32/LIBS”\
-lpython38\
-lpython3
#努比
INCLUDEPATH+=“C:/Python/Python38-32/Lib/site-packages/numpy/core/include”
#opencv
INCLUDEPATH+=“C:/opencv/include”
配置(调试,调试|发布){
LIBS+=-L“C:/opencv/lib/Debug”\
-洛彭茨瓦努科雷德\
-lopencv_highgui420d\
-lopencv_imgcodecs420d\
-lopencv_imgproc420d\
-lopencv_videoio420d
}
配置(发布、调试|发布){
LIBS+=-L“C:/opencv/lib/Release”\
-洛佩恩科鲁酒店\
-lopencv_highgui420\
-lopencv_imgcodecs420\
-lopencv_imgproc420\
-lopencv_videoio420
}
Python_wrapper.h

\ifndef PYTHON\u包装器\u H
#定义PYTHON_包装器_H
#pragma push_宏(“插槽”)
#未定义插槽
#包括
#包括
#包括
外部PyObject*pyModule,*pyFunc;
bool init_python();
void end_python();
PyObject*convertImage(常量cv::Mat和image);
std::字符串类型2STR(int类型);
#pragma pop_宏(“插槽”)
#endif//PYTHON\u包装器
Python_wrapper.cpp

#包括“Python_wrapper.h”
#包括
#包括
#包括
PyObject*pyModule=nullptr;
PyObject*pyFunc=nullptr;
bool IsPathExist(const std::string&s)
{
结构统计缓冲区;
返回(stat(s.c_str(),&buffer)==0);
}
bool init_python()
{
如果(!Py_已初始化())
{
//设置python路径
std::ifstream-infle;
open(“PYTHON_路径”,std::ios::in);
如果(填充)
{

qDebug()请查看中给出的示例

/---初始化视频捕获
视频捕捉帽;
//使用默认API打开默认摄影机
//上限开放(0);
//或高级用法:选择任何API后端
int deviceID=0;//0=打开默认摄像机
int apid=cv::CAP_ANY;//0=autodetect默认API
//使用选定的API打开选定的摄影机
盖打开(设备ID+APID);
//检查我们是否成功
如果(!cap.isOpened()){

cerr最后,我检查了我的程序,发现上面的代码可以正常工作。但是当我在Qt线程(C++)中使用move时,出现了一些错误。在多线程应用程序中嵌入python似乎很困难。

谢谢你的建议。最后,我检查了我的程序,发现我的上述代码可以正常工作。但是当我在Qt线程(C++)中使用move时,出现了一些错误。在多线程应用程序中嵌入python似乎很困难。我不得不放弃。非常感谢。
//--- INITIALIZE VIDEOCAPTURE
VideoCapture cap;
// open the default camera using default API
// cap.open(0);
// OR advance usage: select any API backend
int deviceID = 0;             // 0 = open default camera
int apiID = cv::CAP_ANY;      // 0 = autodetect default API
// open selected camera using selected API
cap.open(deviceID + apiID);

// check if we succeeded
if (!cap.isOpened()) {
    cerr << "ERROR! Unable to open camera\n";
    return -1;
}