在 C++ 中等效的 opencv python 代码

tes*_*sta 5 c++ python opencv

我有一段在 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 前缀是什么。

GPP*_*PPK 4

这行:

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)

  • 我看到两个问题:1.内核应该是8UC1,2.“1”可能被解释为数据地址。所以 `Mat m = Mat(3, 3, CV_8UC1, cv::Scalar(1));` 或 `Mat m = Mat::ones(3, 3, CV_8UC1);` (2认同)