Я хочу передать изображение из кода Python в функцию C ++. Моя функция c ++ находится в файле .so и загружается в python с использованием ctypes. Функция c ++ принимает аргумент типа Mat
. Аргумент (то есть изображение) передается из Python (используя opencv).
Когда я пытаюсь запустить вышеуказанный сценарий, он выдает ошибку, как показано ниже;
ctypes.ArgumentError: аргумент 1:: не знаю, как преобразовать параметр 1
Мой код указан ниже:
test.py
import cv2
from ctypes import *
testso = CDLL("./libvideoread.so")
cap = cv2.VideoCapture("Bigbunny.mp4")
if(cap.isOpened == False):
print("error")
else:
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
cv2.namedWindow('frame',cv2.WINDOW_NORMAL)
while(cap.isOpened):
ret,frame = cap.read()
if ret:
testso.imgread(frame)
else:
break
cap.release()
cv2.destroyAllWindows()
код cpp:
void imgread(Mat frame)
{
/*Do something*/
}
Проверен на наличие ошибки в сети и обнаружен, что Opencv-python преобразует данные изображения в массив numpy. А Opencv-c ++ использует тип Mat. Так как же я могу преобразовать массив NumPy в тип Mat или передать изображение из Python в функцию C ++.
Я не хочу использовать Boost :: python
Спасибо.