Skip to content

Commit 6e7bd52

Browse files
authored
Merge pull request #20 from gjbex/development
Development
2 parents 02d24e6 + a8f5f89 commit 6e7bd52

23 files changed

+1746
-260
lines changed

scientific_python.pptx

167 Bytes
Binary file not shown.

scientific_python_linux64_conda_specs.txt

Lines changed: 199 additions & 166 deletions
Large diffs are not rendered by default.

source-code/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ to create it. There is some material not covered in the presentation as well.
4141
* [`vpython`]: illustrations of using VPython for physics and mathematics animations.
4242
* [`cannon.ipynb`]: Jupyter notebook illustrating the use of numpy, scipy, sympy and
4343
bokeh.
44+
* [`manim`](manim): sample code for illustrating manim, a framework to create
45+
mathematical animations.

source-code/birdsong/create_signal.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ def normalize(signal, ampl):
4242
arg_parser.add_argument('--out', action='store_true',
4343
help='print signal to standard output')
4444
options = arg_parser.parse_args()
45-
if options.specs_file:
46-
pass
47-
else:
45+
if not options.specs_file:
4846
if len(options.freqs) != len(options.ampls):
4947
msg = '# error: {0:d} frequencies for {1:d} amplitudes\n'
5048
sys.stderr.write(msg.format(len(options.freqs),

source-code/diffusion_limited_aggregation.ipynb

Lines changed: 355 additions & 14 deletions
Large diffs are not rendered by default.

source-code/image-processing/analyze.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,21 @@
1313
counter = 0
1414
try:
1515
densities = []
16-
while (True):
16+
while True:
1717
status, frame = capture.read()
18-
if status:
19-
counter += 1
20-
nr_pixels = frame.shape[0]*frame.shape[1]
21-
red_channel = frame[:, :, 0]
22-
green_channel = frame[:, :, 1]
23-
blue_channel = frame[:, :, 2]
24-
densities.append((counter,
25-
red_channel.sum()/nr_pixels,
26-
green_channel.sum()/nr_pixels,
27-
blue_channel.sum()/nr_pixels))
28-
cv2.imshow('frame', frame)
29-
if cv2.waitKey(1) & 0xFF == ord('q'):
30-
break
31-
else:
18+
if not status:
19+
break
20+
counter += 1
21+
nr_pixels = frame.shape[0]*frame.shape[1]
22+
red_channel = frame[:, :, 0]
23+
green_channel = frame[:, :, 1]
24+
blue_channel = frame[:, :, 2]
25+
densities.append((counter,
26+
red_channel.sum()/nr_pixels,
27+
green_channel.sum()/nr_pixels,
28+
blue_channel.sum()/nr_pixels))
29+
cv2.imshow('frame', frame)
30+
if cv2.waitKey(1) & 0xFF == ord('q'):
3231
break
3332
capture.release()
3433
cv2.destroyAllWindows()

source-code/image-processing/capture.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,14 @@
2525
try:
2626
while True:
2727
status, frame = capture.read()
28-
if status:
29-
counter += 1
30-
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
31-
if options.output:
32-
output.write(frame)
33-
cv2.imshow('frame', frame)
34-
if cv2.waitKey(1) & 0xFF == ord('q'):
35-
break
36-
else:
28+
if not status:
29+
break
30+
counter += 1
31+
# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
32+
if options.output:
33+
output.write(frame)
34+
cv2.imshow('frame', frame)
35+
if cv2.waitKey(1) & 0xFF == ord('q'):
3736
break
3837
except KeyboardInterrupt:
3938
capture.release()

source-code/image-processing/follow_ball.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
(frame.shape[1], frame.shape[0]))
4040
else:
4141
output = None
42-
42+
4343
track_window = (options.col, options.row, options.width, options.height)
4444
hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
4545
mask = cv2.inRange(hsv_frame,
@@ -52,24 +52,23 @@
5252
nr_frames = 1
5353
while True:
5454
status, frame = capture.read()
55-
if status == True:
56-
nr_frames += 1
57-
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
58-
dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 50], 1)
59-
status, track_window = cv2.meanShift(dst, track_window,
60-
termination_cond)
61-
if not status:
62-
continue
63-
x, y, w, h = track_window
64-
img = cv2.rectangle(frame, (x, y), (x + w, y + h), 255, 2)
65-
cv2.imshow('image', img)
66-
if output:
67-
output.write(img)
68-
if cv2.waitKey(1) % 0xFF == ord('q'):
69-
break
70-
else:
55+
if status != True:
7156
break
7257

58+
nr_frames += 1
59+
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
60+
dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 50], 1)
61+
status, track_window = cv2.meanShift(dst, track_window,
62+
termination_cond)
63+
if not status:
64+
continue
65+
x, y, w, h = track_window
66+
img = cv2.rectangle(frame, (x, y), (x + w, y + h), 255, 2)
67+
cv2.imshow('image', img)
68+
if output:
69+
output.write(img)
70+
if cv2.waitKey(1) % 0xFF == ord('q'):
71+
break
7372
print(f'{nr_frames} frames processed')
7473
cv2.destroyAllWindows()
7574
if output:

source-code/image-processing/split_scenes.py

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,26 @@ def write_movie(base_name, extension, scene_nr, frames, fps):
4949
prev_rgb = avg_rgb(frame)
5050
scene_nr = 1
5151
saved_scenes = 0
52-
while (True):
52+
while True:
5353
status, frame = capture.read()
54-
if status:
55-
counter += 1
56-
cv2.imshow('frame', frame)
57-
rgb = avg_rgb(frame)
58-
if is_new_scene(prev_rgb, rgb, options.threshold):
59-
if len(frames) >= options.min_frames:
60-
saved_scenes += 1
61-
write_movie(base_name, extension, saved_scenes,
62-
frames, options.fps)
63-
print(f'scene {scene_nr}: {len(frames)} frames')
64-
scene_nr += 1
65-
counter = 1
66-
frames = [frame]
67-
else:
68-
frames.append(frame)
69-
prev_rgb = rgb
70-
if cv2.waitKey(1) & 0xFF == ord('q'):
71-
break
54+
if not status:
55+
break
56+
counter += 1
57+
cv2.imshow('frame', frame)
58+
rgb = avg_rgb(frame)
59+
if is_new_scene(prev_rgb, rgb, options.threshold):
60+
if len(frames) >= options.min_frames:
61+
saved_scenes += 1
62+
write_movie(base_name, extension, saved_scenes,
63+
frames, options.fps)
64+
print(f'scene {scene_nr}: {len(frames)} frames')
65+
scene_nr += 1
66+
counter = 1
67+
frames = [frame]
7268
else:
69+
frames.append(frame)
70+
prev_rgb = rgb
71+
if cv2.waitKey(1) & 0xFF == ord('q'):
7372
break
7473
if frames:
7574
if len(frames) >= options.min_frames:

source-code/manim/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
media/

0 commit comments

Comments
 (0)