This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Modification of code https://github.com/AhadCove/LegoBlobDetection | |
#To save individual detected objects | |
import cv2 | |
import numpy as np | |
#read image in grayscale | |
img = cv2.imread(r'F:\PetProject\LegoKeypoint\30-legos.jpg',cv2.IMREAD_GRAYSCALE) | |
outputdirectory = r'F:\PetProject\SubImage' | |
#image height / width based on dimensions | |
height = np.size(img, 0) | |
width = np.size(img, 1) | |
detector = cv2.SimpleBlobDetector_create() | |
#Detect the blobs in image | |
keypoints = detector.detect(img) | |
print(len(keypoints)) | |
j = 0 | |
for keypoint in keypoints: | |
x = int(keypoint.pt[0]) | |
y = int(keypoint.pt[1]) | |
#Adjust the centre key point to start of x | |
x = x-20 | |
#Adjust y to cover complete object | |
y = y-50 | |
s = keypoint.size | |
octave = keypoint.octave | |
print(x,y) | |
print(height,width) | |
#if height and width exceeds original image dimension skip this step | |
#70 is rough size of the blob based on analysis | |
#check for margins and size before extracting the regions | |
if(y+70 < height and x+70 < width and x > 0 and y > 0): | |
newImage=img[y:y+70,x:x+70] | |
object_file_name = outputdirectory + str('\\') + str(j) + ".jpg" | |
j = j+1 | |
cv2.imwrite(object_file_name, newImage) | |
#draw detected keypoints | |
imgkeypoints = cv2.drawKeypoints(img,keypoints,np.array([]),(0,0,255),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) | |
#Display found keypoints | |
cv2.imshow("keypoints",imgkeypoints) | |
cv2.imwrite(r"F:\PetProject\LegoKeypoint\square_circle_opencv.jpg", img) | |
cv2.waitKey(0) | |
cv2.destroyAllWindows() |
Happy Learning!!!
No comments:
Post a Comment