gpt4 book ai didi

python - 如何使用不同的形状将一个轮廓分成两个?

转载 作者:行者123 更新时间:2023-12-02 16:13:56 24 4
gpt4 key购买 nike

我是 opencv 新手,但我需要分析老鼠的热图像(见 example image)。这个想法是(1)只保留一个轮廓,例如整个鼠标(或多或少都很好)和(2)将此轮廓分成尾部和 body 的其他部分,以获得两个不同的轮廓。我尝试过使用阈值处理、边缘检测和分水岭,但结果远非良好。我想过使用尾部和 body 的不同形状,但我不知道如何实现。

有没有一种可靠的方法可以推广到类似的图像甚至视频?

提前致谢

最佳答案

使用 Cryckx 提到的形态很好,但您也可以使用 距离变换 ,这会削弱薄部分(如故事),因此可以轻松切割。这是我得到的结果(我裁剪图像只是为了更好地可视化):

enter image description here

Opencv C++ 代码:

Mat im1 = imread("E:/1/2.jpg", 0);
Mat im2, im3;

threshold(im1, im2, 250, 255, THRESH_OTSU);

imshow("Initial Thresholding", im2);

Mat dist;
distanceTransform(im2, dist, DIST_L2, 3);
normalize(dist, dist, 0, 255.0, NORM_MINMAX);
dist.convertTo(dist, CV_8U);

imshow("Distance Transform Image", dist);
Mat mask1, mask2, mask3;

threshold(dist, mask1, 50, 255,THRESH_BINARY); // A suitable threshold to cut the weak tale
dilate(mask1, mask1, Mat::ones(9,9, CV_8U));

imshow("Threshold on Distance Transform", mask1);

bitwise_and(im2, mask1, mask2);

imshow("mouse", mask2);

subtract(im2, mask2, mask3);

imshow("tale", mask3);
waitKey(0);

关于python - 如何使用不同的形状将一个轮廓分成两个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187356/

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