C++ 访问c+的输出+;在python中使用supprocess.check\u输出调用的代码

C++ 访问c+的输出+;在python中使用supprocess.check\u输出调用的代码,c++,subprocess,opencv-mat,C++,Subprocess,Opencv Mat,我有一个处理图像的python代码。由于某些性能原因,我决定使用一个C++程序,该程序没有任何输入参数,但它的输出是CV::MAT格式的图像数据。 我想从python代码中访问这个输出数据 我使用子进程调用C++代码,CCHECKOULL输出.< /P> 如何从python代码中访问图像数据 这是我的python代码的一部分: s1 = subprocess.check_output("g++ watermark.cpp `pkg-config --cflags --libs o

我有一个处理图像的python代码。由于某些性能原因,我决定使用一个C++程序,该程序没有任何输入参数,但它的输出是CV::MAT格式的图像数据。 我想从python代码中访问这个输出数据

我使用子进程调用C++代码,CCHECKOULL输出.< /P> 如何从python代码中访问图像数据

这是我的python代码的一部分:

        s1 = subprocess.check_output("g++ watermark.cpp `pkg-config --cflags --libs opencv` -lm  -o out2;./out2",
                                     shell=True)

        print("TYPE ==> ", type(s1), " size : ", sys.getsizeof(s1))

        print(s1.decode("utf-8"))

这是我的C++代码:

#include <opencv2/opencv.hpp>

#include <iostream>


using namespace std;
using namespace cv;

Mat watermark()
{
        cout << " This is a simple watermark !";
        Mat source_img, watermark_img;
        source_img = imread("source.jpg");
        watermark_img = imread("my_logo.png");

        int width = watermark_img.size().width;
        int height = watermark_img.size().height;
        int x_pos = rand() % (source_img.size().width - width - 10) + 10;
        int y_pos = rand() % (source_img.size().height - height - 10) + 10;

        cv::Rect pos = cv::Rect(x_pos, y_pos, width, height);
        double alpha = 0.5;

        addWeighted(source_img(pos), alpha, watermark_img, 1 - alpha, 0.0, source_img(pos));

        return source_img;
}


int main()
{
        Mat new_image = watermark();
        return 0;
}


#包括
#包括
使用名称空间std;
使用名称空间cv;
Mat watermark()
{

CUT是一个有趣的方法,它是用Python调用C++代码的。无论如何,如何将输出保存到C++中的文件中,并用Python读取它?@尼尔森为什么会很有趣?我不想把我的输出保存在文件中,因为我们最后还有一个写和读操作。实际上,我的最终目标是有一个C++代码,它接受BYT。Eaayy作为其参数,在处理之后,返回一个字节数组作为输出。通常,您可以预先将C++代码编译成可执行或DLL。听起来您更希望得到DLL。在这种情况下,您应该为DLL定义一个简单的C(非C++)接口,并查看<代码> cType < /Cord>库。