我有一个适用于图像的 python 代码。出于一些性能原因,我决定使用一个 C++ 程序,它的函数没有任何输入参数,但它的输出是 cv::mat 格式的图像数据。
我想从我的 python 代码中访问这个输出数据。
我使用 subprocess.check_output 调用这个 c++ 代码。
如何从我的 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;
}
我想在 main 函数中访问 new_image 数据。
当我运行我的 python 代码时,它完全运行,我看到这条消息:“这是一个简单的水印!”
但我不知道如何访问图像数据以在我的 python 代码中使用它来显示它。
有人有什么想法可以帮助我吗?