我试图找到该图像的轮廓,但方法findContours只返回1 个轮廓,该轮廓在图像 2中突出显示。我试图找到所有外部轮廓,例如这些数字位于内部的圆圈。我究竟做错了什么?我可以做什么来实现它?
图1:
图2:
以下是我的代码的相关部分。
thresh = cv2.threshold(image, 0, 255,
cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)
当我更改cv2.RETR_EXTERNAL为cv2.RETR_LIST它时,它似乎检测到相同的轮廓两次或类似的东西。图 3 显示了首次检测到圆的边界,然后再次检测到圆的边界,如图 4 所示。我试图仅找到这些圆的外边界。我怎样才能做到这一点?
我试图使用awt和swing绘制二叉树.我可以显示树的节点,但我不能从父节点到子节点绘制线条.我使用以下类:Node(表示节点),treeGUI,DrawTree和Main.这是没有线的输出.
我的目的是显示从父节点到子节点的行.我尝试使用类中的drawLinemetohd Graphics,这是输出:
方法drawTree定义节点在屏幕中的值的位置,并在ArrayLists中存储节点的位置.drawLine方法绘制线条.我认为这些行是这样的,因为值以特定的顺序存储在ArrayList中.我尝试了各种方法以正确的方式画线,但都不成功.我如何画出从父母到孩子的线条?
public class TreeGUI extends JFrame {
private JPanel contentPane;
public Node node;
public DrawTree drawer;
/**
* Create the frame.
*/
public TreeGUI(Node node) {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
drawer = new DrawTree(node);
contentPane.add(drawer);
setContentPane(contentPane);
this.node = node;
setVisible(true);
}
}
class DrawTree extends JPanel{
public Node node;
public static ArrayList listX = new ArrayList();
public static ArrayList listY = …Run Code Online (Sandbox Code Playgroud)