经过前几篇的介绍,想必简单的流程已经熟悉了,直接上代码
有参返回 uchar*
c++代码
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <stdlib.h>
#define DLLEXPORT extern "C" __declspec(dllexport)
using namespace cv;
DLLEXPORT uchar* cpp_canny(int height, int width, uchar* data) {
cv::Mat src(height, width, CV_8UC1, data);
cv::Mat dst;
Canny(src, dst, 100, 200);
uchar* buffer = (uchar*)malloc(sizeof(uchar)*height*width);
memcpy(buffer, dst.data, height*width);
return buffer;
}
DLLEXPORT void release(uchar* data) {
free(data);
}
python调用
import cv2
from numpy.ctypeslib import ndpointer
import ctypes
import numpy as np
dll=ctypes.WinDLL('MyDLL.dll')
def cpp_canny(input):
if len(img.shape)>=3 and img.shape[-1]>1:
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
h,w=gray.shape[0],gray.shape[1]