我有一段在 Python 上运行良好的代码。我想在 C/C++ 中做同样的事情,但我不明白 C++ 中的内核是如何工作的:
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)
Run Code Online (Sandbox Code Playgroud)
kernel 和 opening 是 Mat 对象。
我也有
mat1=np.uint8(mat1)
Run Code Online (Sandbox Code Playgroud)
我不明白这个 np 前缀是什么。
这行:
kernal = np.ones((3,3)), np.uint8)
Run Code Online (Sandbox Code Playgroud)
与在 C++ 中执行此操作相同:
Mat m = Mat(3, 3, CV_8UC1, cv::Scalar(1));
Run Code Online (Sandbox Code Playgroud)
如前所述MaruisSiuram
,np 前缀用于 numpy 库,这在 C++ 中不使用,您可以只使用 OpenCV Matrix 容器。
这行:
mat1=np.uint8(mat1)
Run Code Online (Sandbox Code Playgroud)
正在将 mat1 转换为 uint8 类型,可以像这样完成:
mat1.convertTo(mat1, CV_8UC1);
Run Code Online (Sandbox Code Playgroud)