我有一段在Python上运行良好的代码。 我希望在C/C++中完成相同的操作,但我不理解如何在C++中使用内核:
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)
kernel和opening都是Mat对象。
我还有:
mat1=np.uint8(mat1)
我不明白这个np前缀是什么意思。
这一行:
kernal = np.ones((3,3)), np.uint8)
在C++中执行以下操作与此相同:
Mat m = Mat(3, 3, CV_8UC1, cv::Scalar(1));
MaruisSiuram
说,np前缀是用于numpy库的,在C ++中不使用,您可以直接使用OpenCV Matrix容器。
这行代码:
mat1=np.uint8(mat1)
将 mat1 强制转换为 uint8 类型,可以这样实现:
mat1.convertTo(mat1, CV_8UC1);
1
可能会被解释为数据地址。因此,可以使用Mat m = Mat(3, 3, CV_8UC1, cv::Scalar(1));
或者Mat m = Mat::ones(3, 3, CV_8UC1);
。 - MickagetStructuringElement()
。@testpresta mat1.setTo(0, mat2 == 255);
- Miki
np
前缀是numpy
库。OpenCV 使用该库进行所有数字操作,因为 Python 数组在数字计算方面非常低效。 - MariusSiuram