Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2015
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.87 KB | None | 0 0
  1. import cv2
  2. import numpy as np
  3.  
  4. def distanceBtwPoints(p0, p1):
  5.     return np.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)
  6.  
  7. def findNearestPointIndex(pt, Points):
  8.     mindistance = 1e9
  9.  
  10.     for i in range(len(Points)):
  11. #         print "Points i", Points[i]
  12. #         print "pt", pt
  13.         distance = distanceBtwPoints(pt, Points[i])
  14. #         print 'distance', distance
  15. #
  16.         if distance < mindistance :
  17.             mindistance =  distance
  18.             nearestpointindex = i
  19.  
  20.  
  21.  
  22.     return  nearestpointindex
  23.  
  24. # def findNearestPointIndex(pt, Points):
  25. #     mindistance = 1e9
  26. #
  27. #     for ip in Points:
  28. #
  29. # #         print "ip", ip
  30. # #         print "pt", pt
  31. #
  32. #         distance = distanceBtwPoints(pt, ip)
  33. #         print 'distance', distance
  34. # #
  35. #         if distance < mindistance :
  36. #             mindistance =  distance
  37. #             nearestpoint = ip
  38. #             print "nearestpoint", nearestpoint
  39. #             nearestpointindex = nearestpoint.argmin()
  40. #             print "nearestpointindex", nearestpoint.argmin()
  41. #
  42. #
  43. #     return  nearestpointindex
  44.  
  45. if __name__ == '__main__':
  46.     img = cv2.imread("bridgeTestSource.png")
  47. #     src = cv2.imread("bridgeTestSource.png")
  48.  
  49.     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  50.     gray = np.asarray(gray < 127, dtype=np.uint8) # need to cast back to uint8
  51.  
  52.  
  53.     contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
  54.  
  55.     cv2.drawContours(img, contours,-1, (0,0,0), 1)
  56.     cnt = contours[0]
  57.  
  58.     for i in range(len(contours)):
  59.         if len(cnt) < len(contours[i]):
  60.             cnt = contours[i]
  61.     for i in range(len(contours)):
  62.  
  63.         if not np.array_equal(cnt, contours[i]) and len(contours[i]) > 10:
  64.             for j in range(len(contours[i])):
  65.                 pt0 = contours[i][j]
  66.  
  67.                 cnt_nearIdx = cnt[findNearestPointIndex(pt0.squeeze(), cnt.squeeze())].squeeze()
  68.                 lcnt_nearIdx = cnt_nearIdx.tolist()
  69.                 lpt0 = (pt0.squeeze()).tolist()
  70.                 tcnt_nearIdx = tuple(lcnt_nearIdx)
  71.                 tpt0 = tuple(lpt0)
  72.                 cv2.line(img,tpt0, tcnt_nearIdx,(0,0,0),1,8)
  73.    
  74.     cv2.imwrite('nimg.jpg', img)
  75.  
  76.     gray_src = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  77.     gray_src1 = np.asarray(gray_src < 127, dtype=np.uint8) # need to cast back to uint8
  78.  
  79.  
  80.     contours1, hierarchy = cv2.findContours(gray_src1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  81.  
  82.     imgMask = np.ones(img.shape)*255
  83.  
  84.     cv2.drawContours(imgMask, contours1,-1, 0, 0)
  85.  
  86.     m_xor= np.ones(imgMask.shape) * 255
  87.  
  88.     ncnt = cnt.astype(np.int32)
  89.    
  90.     cv2.polylines(m_xor, [ncnt], 1, (0,0,0))
  91.     cv2.imwrite('resultpoly.jpg', m_xor)
  92.    
  93.  
  94.     newImg = (cv2.bitwise_xor(imgMask, m_xor))
  95.    
  96.     invNewImg = cv2.bitwise_not(newImg)
  97.  
  98.     cv2.imwrite('result.jpg', newImg)
  99.     cv2.imwrite('result2.jpg', invNewImg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement