Stelios Giakoumidis
5 years ago
1 changed files with 55 additions and 3 deletions
@ -1,4 +1,56 @@ |
|||
import servo |
|||
import cv2 |
|||
|
|||
# Constant variables definition. |
|||
DESIRED_HEIGHT = 480 # The input image will be resized to this height, preserving its aspect ratio. |
|||
BLUE_THRESHOLD = 128 # If the blue channel is bigger than this, it is considered background and removed. |
|||
|
|||
|
|||
# Function definitions |
|||
def resizeImage(img): |
|||
"Resize the input image based on the DESIRED_HEIGHT variable." |
|||
p = img.shape; |
|||
aspectRatio = p[0]/p[1] |
|||
width = DESIRED_HEIGHT*aspectRatio |
|||
img = cv2.resize(img, ( DESIRED_HEIGHT, int(width) )) |
|||
return img |
|||
|
|||
##################################################################################### |
|||
|
|||
# Read image from source |
|||
img = cv2.imread('/home/stelios/Desktop/IoT/drone.jpg', cv2.IMREAD_COLOR) |
|||
|
|||
|
|||
# Resize image to the desired height. |
|||
img = resizeImage(img) |
|||
|
|||
imgOriginal = img.copy() |
|||
|
|||
# Remove BLUE |
|||
p = img.shape |
|||
for i in range(p[0]): |
|||
for j in range(p[1]): |
|||
if (img[i,j,0] > BLUE_THRESHOLD): |
|||
img[i,j,:] = 0 |
|||
|
|||
# Convert to grayscale. |
|||
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) |
|||
|
|||
##################################################################### |
|||
|
|||
thres1, img2 = cv2.threshold(img, 1, 255, cv2.THRESH_BINARY) |
|||
|
|||
im2, contours, hierarchy = cv2.findContours(img2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |
|||
|
|||
maxContour = max(contours, key = cv2.contourArea) |
|||
|
|||
cv2.drawContours(imgOriginal, maxContour, -1, (0,0,255), 1) |
|||
print(len(maxContour)) |
|||
|
|||
x,y,w,h = cv2.boundingRect(maxContour) |
|||
|
|||
# draw the biggest contour (c) in green |
|||
cv2.rectangle(imgOriginal,(x,y),(x+w,y+h),(0,20,255),2) |
|||
|
|||
cv2.imshow('Test', imgOriginal) |
|||
cv2.waitKey(0) |
|||
|
|||
servo.SetAngleUp(180) |
|||
servo.SetAngleDown(180) |
Loading…
Reference in new issue