gpt4 book ai didi

c++ - 在opencv中实现skeletonize算法的问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:29 27 4
gpt4 key购买 nike

我正在尝试使用 opencv 实现骨架化算法。我想减少下图的像素数并使其变薄。

这是我要骨架化的图像:

enter image description here

这是我的代码:

Mat image = imread("4X4_b9.png",IMREAD_GRAYSCALE);
int rows = image.rows;
int cols = image.cols;
int size = rows * cols;
Mat skel = Mat::zeros(image.rows,image.cols,CV_8U);
threshold(image, image, 100, 255, THRESH_BINARY);
Mat element = getStructuringElement(MORPH_CROSS, Size(3,3));
bool done = false;
while(done == false){
Mat eroded;
erode(image, eroded, element);
Mat temp;
dilate(eroded, temp, element);
subtract(image, temp, temp);
bitwise_or(skel, temp, skel);
eroded.copyTo(image);

int zeros = size - countNonZero(image);
if(zeros == size){
done = true;
}
}

imshow("skel",skel);
waitKey(0);
destroyAllWindows();

注意:我试过这个链接作为引用: python implemented

运行后丢失了很多行。

这是输出:

enter image description here

我做错了什么?

最佳答案

img 转换为白色形状的黑色背景

img -> threshold(img, img, 128, 255, THRESHOLD_BINARY_INV);

关于c++ - 在opencv中实现skeletonize算法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47142285/

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