|
| 1 | +import cv2 |
| 2 | +refpt = [] #List of refrence points |
| 3 | + |
| 4 | +def select_roi (event,x,y,flags,param): |
| 5 | + global refpt #Global refrences |
| 6 | + |
| 7 | + if event == cv2.EVENT_LBUTTONDOWN: # When the left mouse button is cliked |
| 8 | + refpt = [(x , y)] |
| 9 | + |
| 10 | + elif event == cv2.EVENT_LBUTTONUP: # When the left mouse button is released |
| 11 | + refpt.append((x , y)) # recording the last coordinates |
| 12 | + cv2.rectangle(img_main,refpt[0],refpt[1],(0,255,0),2) |
| 13 | + cv2.imshow("frame",img_main) |
| 14 | + print("Selection Successful") |
| 15 | + |
| 16 | +img = cv2.imread("Data/Man_United.jpeg") |
| 17 | +img_main = cv2.resize(img,(400,400)) #Resizing image |
| 18 | + |
| 19 | +clone = img_main.copy() # To reset the image after cropping |
| 20 | +clone2 = img_main.copy() # To crop a section out without affecting the original image |
| 21 | + |
| 22 | +cv2.namedWindow("frame") |
| 23 | +cv2.setMouseCallback("frame",select_roi) |
| 24 | + |
| 25 | +i = 1 # Numbering for saving images |
| 26 | + |
| 27 | +while True: |
| 28 | + cv2.imshow("frame",img_main) |
| 29 | + var = cv2.waitKey(0) |
| 30 | + |
| 31 | + # Select a region , then press c to crop that portion |
| 32 | + |
| 33 | + if var == ord('c'): # Crop selected images |
| 34 | + |
| 35 | + if len(refpt) == 2: |
| 36 | + roi = clone2[ refpt[0][1] : refpt[1][1] , refpt[0][0] : refpt[1][0] ] # [x1:x2 , y1:y2] |
| 37 | + cv2.namedWindow("Crop") |
| 38 | + cv2.imshow("Crop",roi) |
| 39 | + print("Cropped") |
| 40 | + |
| 41 | + var2 = cv2.waitKey(0) |
| 42 | + |
| 43 | + if var2 == ord('s'): # Saving cropped image |
| 44 | + cv2.imwrite("Data/cropped image{}.png".format(i),roi) |
| 45 | + i = i+1 |
| 46 | + print("image saved\n") |
| 47 | + cv2.destroyWindow("Crop") |
| 48 | + img_main = clone.copy() |
| 49 | + |
| 50 | + elif var2 == ord('r'): # Reset |
| 51 | + cv2.destroyWindow("Crop") |
| 52 | + print("Reset\n") |
| 53 | + img_main = clone.copy() |
| 54 | + |
| 55 | + elif var == ord('q'): # Exit the loop |
| 56 | + print("Exiting ...") |
| 57 | + break |
| 58 | + |
| 59 | +cv2.destroyAllWindows() |
0 commit comments