gpt4 book ai didi

c++ - OpenCV 中的侵 eclipse

转载 作者:行者123 更新时间:2023-11-27 23:20:11 25 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 执行图像腐 eclipse 。我想这样做:假设我有四个不同的元素

S1 = [ 0 1 0, 0 1 0, 0 1 0 ]
S2 = [ 0 0 0, 1 1 1, 0 0 0 ]
S3 = [ 0 0 1, 0 1 0, 1 0 0 ]
S4 = [ 0 1 0, 1 1 1, 0 1 0 ]

我想在原始图像上用这些元素执行四种不同的腐 eclipse :

E1 = I & S1 
E2 = I & S2
E3 = I & S3
E4 = I & S4

其中“I”是原始图像,为了简单起见,我使用“&”表示侵 eclipse 。然后我想通过添加这四个来获得最终的侵 eclipse :

E = E1 + E2 + E3 + E4

但是在用opencv实现这些的时候,我在早期遇到了困难。我这样声明元素:

int S1[3][3] = { { 0, 1, 0 }, { 0, 1, 0 }, { 0, 1, 0 } };
int S2[3][3] = { { 0, 0, 0 }, { 1, 1, 1 }, { 0, 0, 0 } };
int S3[3][3] = { { 0, 0, 1 }, { 0, 1, 0 }, { 1, 0, 0 } };
int S4[3][3] = { { 0, 1, 0 }, { 1, 1, 1 }, { 0, 1, 0 } };

然后对于使用“cv::erode”,我对这些元素有困难,因为它们不是可接受的类型。我怎样才能使用这些元素来获得我想要的上述侵 eclipse ?先感谢您。

最佳答案

您可能需要根据所需的内核形状创建一个cv::Mat,这些被称为结构化元素,OpenCV 提供了getStructuringElement函数来创建一些常见的形状。

或者,您可以通过直接使用以下内容从数据创建新矩阵来形成自己的矩阵:

cv::Mat S1 = (cv::Mat_<uchar>(3,3) << 0, 1, 0, 0, 1, 0, 0, 1, 0);

您可以通过在终端中显示来确认这是否正确:

std::cout << S1 << std::endl;

找到矩阵后,还可以通过简单的算术运算轻松组合它们,例如:

cv::Mat E = E1 + E2 + E3 + E4;

关于c++ - OpenCV 中的侵 eclipse ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com