У меня есть код Python, который работает с изображениями. по некоторым соображениям производительности я решил использовать программу на C ++, в которой есть функция, у которой нет входных аргументов, но ее выходные данные представляют собой данные изображений в формате cv :: mat.
Я хочу получить доступ к этим выводамданные из моего кода Python.
Я называю этот код C ++ с использованием subprocess.check_output.
как я могу получить доступ к данным изображения из моего кода 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;
}
Я хочу получить доступ к данным new_image в основной функции.
, когда я запускаю свойPython-код, он работает полностью, и я вижу это сообщение: «Это простой водяной знак!»
, но я не знаю, как получить доступ к данным изображения, чтобы использовать его в коде моего питона, чтобы показать его.
Кто-нибудь может мне помочь?