Я пытаюсь передать изображение из python в C ++, используя boost.python.Вот мой код Python:
import cv2
imgs = []
img1 = cv2.imread('img1.jpg')
img2 = cv2.imread('img2.jpg')
imgs.append(img1)
imgs.append(img2)
frame_size = imgs[0].shape[:2]
new_img = imwriteInC(imgs, frame.size[1], frame.size[0])
Вот код C ++:
#include <iostream>
#include <boost/pythong.hpp>
#include <Python.h>
using namespace cv;
bp::list imwriteInC(bp::list frames, int img_width, int img_height){
Mat input_frame, new_frame;
const char* first_frame = bp::extract<const char*>(bp::str(frames[0]));
input_frame = Mat(img_height, img_width, CV_8UC3);
new_frame.create(input_frame.size(), CV_8UC3);
size_t memsize = 3 * img_height * img_width;
memcpy(new_frame.data, first_frame, memsize));
imwrite("cImage.png", new_frame);
...
return outputList
}
Исходное изображение должно быть:
Однако, после передачи этого изображения в C ++, результат imwrite становится
Я не очень хорош в C ++.Кто-нибудь может указать, как это исправить?Заранее спасибо!