Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import cv2
- import numpy as np
- # mesh image
- imMesh = cv2.imread('new_refined2__DXF.png', -1)
- # layer image
- imLayer1 = cv2.imread('Layer1.png', -1)
- """
- binary conversions
- """
- imMeshGray = cv2.cvtColor(imMesh, cv2.COLOR_BGR2GRAY)
- ret, imMeshBw = cv2.threshold(imMeshGray, 250, 255, cv2.THRESH_BINARY)
- imLayer1Gray = cv2.cvtColor(imLayer1, cv2.COLOR_BGR2GRAY)
- (thresh, imLayerBw) = cv2.threshold(imLayer1Gray, 128, 255,
- cv2.THRESH_BINARY | cv2.THRESH_OTSU)
- connectivity = 4
- output = cv2.connectedComponentsWithStats(imMeshBw, connectivity, cv2.CV_32S)
- num_labels = output[0]
- labels = output[1]
- stats = output[2]
- centroids = output[3]
- # labels = labels + 1
- print(labels)
- print(num_labels)
- # if I want for each label
- for label in np.unique(labels):
- if label == 0:
- continue
- mask = np.zeros(imMeshGray.shape, dtype="uint8")
- mask[labels == label] = 255
- # maskedLayer = cv2.bitwise_and(mask, imLayer1)
- maskedLayer = cv2.bitwise_and(mask, imLayerBw)
- cnts = cv2.findContours(maskedLayer.copy(),
- cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
- print(cnts)
- for c in cnts:
- M = cv2.moments(c)
- if M["m00"] != 0:
- cX = int(M["m10"] / M["m00"])
- cY = int(M["m01"] / M["m00"])
- else:
- cX, cY = 0, 0
- peri = cv2.arcLength(c, True)
- approx = cv2.approxPolyDP(c, 0.05 * peri, True)
- if (len(approx) == 3):
- cv2.drawContours(imMesh, [c], -1, (0, 255, 0), 1)
- cv2.putText(imMesh, "*", (cX, cY),
- cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement