Skip to content

Commit 2925be5

Browse files
authored
Add files via upload
1 parent 1ea0dce commit 2925be5

File tree

3 files changed

+244
-0
lines changed

3 files changed

+244
-0
lines changed
+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
from imutils.video import VideoStream
2+
import numpy as np
3+
import imutils
4+
import time
5+
import cv2
6+
7+
8+
class TrackROI():
9+
10+
def __init__(self):
11+
self.refPt = []
12+
self.clickEventsEnabled = False
13+
self.drawingRectangle = False
14+
self.rectangleDrawn = False
15+
self.x_start = -1
16+
self.y_start = -1
17+
self.ref_frame = None
18+
19+
20+
def clickAndCrop(self, event, x, y, flags, param):
21+
22+
temp_frame = np.copy(self.ref_frame)
23+
24+
if(self.clickEventsEnabled == True):
25+
if event == cv2.EVENT_LBUTTONDOWN:
26+
if((self.rectangleDrawn == False)):
27+
self.drawingRectangle = True
28+
self.x_start,self.y_start = x,y
29+
self.refPt.append((x,y))
30+
31+
elif event == cv2.EVENT_MOUSEMOVE:
32+
if(self.drawingRectangle == True):
33+
cv2.rectangle(temp_frame, (self.x_start,self.y_start), (x,y), (0,0,255), 2)
34+
cv2.imshow("OBJECT TRACKING", temp_frame)
35+
temp_frame = self.ref_frame
36+
37+
elif event == cv2.EVENT_LBUTTONUP:
38+
if((self.rectangleDrawn == False)):
39+
self.drawingRectangle = False
40+
self.rectangleDrawn = True
41+
cv2.rectangle(self.ref_frame, (self.x_start, self.y_start), (x,y), (0,0,255), 2)
42+
self.refPt.append((self.x_start, self.y_start))
43+
self.refPt.append((x, self.y_start))
44+
self.refPt.append((x, y))
45+
self.refPt.append((self.x_start, y))
46+
47+
#roiPoints = [(self.x_start, self.y_start), (x, y)]
48+
49+
# if len(roiPoints) == 2:
50+
# roi = self.ref_frame[roiPoints[0][1]:roiPoints[1][1], roiPoints[0][0]:roiPoints[1][0]]
51+
# cv2.imshow("Cropped Object", roi)
52+
53+
roi = (self.x_start, self.y_start, x, y)
54+
55+
return np.array([[self.x_start, self.y_start], [x, self.y_start], [x, y], [self.x_start, y]])
56+
57+
58+
def maskImg_WithROI(self, frame, ROIPointsList):
59+
pointsArray = np.array(ROIPointsList)
60+
mask = np.zeros_like(frame.shape, dtype=np.uint8)
61+
62+
cv2.fillPoly(mask, np.int32([pointsArray]), 255)
63+
maskedImage = cv2.bitwise_and(frame, mask)
64+
cv2.imshow("Masked Frame", maskedImage)
65+
return maskedImage
66+
67+
def outputROIMask(self, frame, ROIPointsList):
68+
pointsArray = np.array(ROIPointsList)
69+
pointsArray = pointsArray.reshape((-1,1,2))
70+
mask = np.zeros(frame.shape, dtype=np.uint8)
71+
white = (255,255,255)
72+
cv2.fillPoly(mask, np.int32([pointsArray]), white)
73+
return mask
74+
75+
def main(self):
76+
77+
self.clickEventsEnabled = True
78+
79+
#logo = cv2.imread('Baykar-Logo.png')
80+
#logo = cv2.resize(logo, (100,100), interpolation=cv2.INTER_AREA)
81+
82+
video = 'videos/drone01.mp4'
83+
cap = cv2.VideoCapture(video)
84+
85+
if cap.isOpened():
86+
ret, self.ref_frame = cap.read()
87+
originalRef_Frame = np.copy(self.ref_frame)
88+
else:
89+
ret = False
90+
91+
92+
cv2.namedWindow("OBJECT TRACKING")
93+
cv2.setMouseCallback("OBJECT TRACKING", self.clickAndCrop)
94+
95+
while ret:
96+
97+
98+
self.ref_frame = cap.read()
99+
self.ref_frame = self.ref_frame[1]
100+
101+
self.ref_frame = imutils.resize(self.ref_frame, width=800)
102+
103+
#self.ref_frame[0:100, 700:800] = logo
104+
105+
106+
cv2.imshow("OBJECT TRACKING", self.ref_frame)
107+
108+
key = cv2.waitKey(0) & 0xFF
109+
110+
if key == ord("r"):
111+
self.ref_frame = np.copy(originalRef_Frame)
112+
self.refPt = []
113+
self.drawingRectangle = False
114+
self.rectangleDrawn = False
115+
self.x_start, self.y_start = -1,-1
116+
117+
elif key == ord("p"):
118+
#self.clickEventsEnabled = False
119+
self.ref_frame = np.copy(originalRef_Frame)
120+
self.drawingRectangle = False
121+
self.rectangleDrawn = False
122+
#break
123+
124+
elif key == ord("q"):
125+
break
126+
127+
self.gray = cv2.cvtColor(self.ref_frame, cv2.COLOR_BGR2GRAY)
128+
129+
#self.ref_frame = self.maskImg_WithROI(self, self.gray, self.refPt)
130+
#cv2.imshow("Masked Frame", self.maskImg_WithROI(self, self.gray, self.refPt))
131+
132+
133+
#roiMask = self.outputROIMask(self.ref_frame, self.refPt)
134+
#cv2.imwrite("ROI.jpg", roiMask)
135+
136+
cv2.waitKey(0)
137+
cv2.destroyAllWindows()
138+
139+
if __name__ == '__main__':
140+
trackROI = TrackROI()
141+
trackROI.main()

04-07-2019-at-night/a.py

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
from imutils.video import VideoStream
2+
import numpy as np
3+
import imutils
4+
import time
5+
import cv2
6+
7+
points = []
8+
cropping = False
9+
x_start, y_start, x_end, y_end = 0, 0, 0, 0
10+
11+
def selectROI(event, x, y, flags, param):
12+
13+
global x_start, y_start, x_end, y_end, cropping, points
14+
15+
# if the left click of mouse was DOWN, start RECORDING
16+
# (x, y) coordinates and indicate that cropping is being
17+
if event == cv2.EVENT_LBUTTONDOWN:
18+
x_start, y_start, x_end, y_end = x, y, x, y
19+
cropping = True
20+
21+
# Mouse is Moving
22+
elif event == cv2.EVENT_MOUSEMOVE:
23+
if cropping == True:
24+
x_end, y_end = x, y
25+
26+
# if the left click of mouse button was released
27+
elif event == cv2.EVENT_LBUTTONUP:
28+
# record the ending (x, y) coordinates
29+
x_end, y_end = x, y
30+
cropping = False # cropping is finished
31+
32+
33+
refPoint = [(x_start, y_start), (x_end, y_end)]
34+
if len(refPoint) == 2: #when two points were found
35+
#roi = oriImage[refPoint[0][1]:refPoint[1][1], refPoint[0][0]:refPoint[1][0]]
36+
#cv2.imshow("Cropped", roi)
37+
points = np.array([[x_start, y_start], [x_end, y_start], [x_end, y_end], [x_start, y_end]])
38+
39+
40+
def maskImg_WithROI(frame, ROIPointsList):
41+
pointsArray = np.array(ROIPointsList)
42+
mask = np.zeros_like(frame.shape, dtype=np.uint8)
43+
cv2.fillPoly(mask, np.int32([pointsArray]), 255)
44+
maskedImage = cv2.bitwise_and(frame, mask)
45+
return maskedImage
46+
47+
cv2.namedWindow("Original Frame")
48+
cv2.setMouseCallback("Original Frame", selectROI)
49+
50+
video = 'videos/drone01.mp4'
51+
cap = cv2.VideoCapture(video)
52+
53+
while True:
54+
55+
ret, frame = cap.read()
56+
57+
frame = imutils.resize(frame, width=800)
58+
59+
print(points)
60+
61+
# original_frame = np.copy(frame)
62+
63+
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
64+
65+
# blur = cv2.GaussianBlur(frame,(5,5),0)
66+
# gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
67+
68+
# masked_frame = maskImg_WithROI(gray, points)
69+
# cv2.imshow('ROI Frame', masked_frame)
70+
71+
cv2.imshow('Original Frame', frame)
72+
73+
74+
k = cv2.waitKey(1) & 0xFF
75+
if k == 27:
76+
break
77+
78+
cap.release()
79+
cv2.destroyAllWindows()
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
img = cv2.imread(path, 1)
2+
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
3+
4+
filter1 = np.array(([0, -1, 0], [-1, 5, -1], [0, -1, 0]), np.float32) #Sharpening Filter
5+
output = cv2.filter2D(img, -1, filter1) #convolution filter
6+
7+
blur = cv2.GaussianBlur(img,(5,5),0)
8+
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
9+
10+
_, thresh = cv2.threshold(gray,170,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
11+
12+
mask = cv2.erode(thresh, None, iterations=1)
13+
mask = cv2.dilate(mask, None, iterations=1)
14+
15+
def tracking(mask, img):
16+
17+
# find contours in the mask and initialize the current
18+
# (x, y) center of the ball
19+
_, cnts, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
20+
print("{} Objects have detected!".format(len(cnts)))
21+
22+
for i in cnts:
23+
x,y,w,h = cv2.boundingRect(i)
24+
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

0 commit comments

Comments
 (0)