CHAPTER 3. Basics of Python and Scikit Image
Scikit Image
Example 1. Scikit docs
Doing Gamma Correction
from skimage import exposure
from skimage import io
from pylab import *
img = io.imread('puppy.jpg')
gamma_corrected1 = exposure.adjust_gamma(img, 0.5)
gamma_corrected2 = exposure.adjust_gamma(img, 5)
figure(0)
io.imshow(gamma_corrected1)
figure(1)
io.imshow(gamma_corrected2)
CHAPTER 4. Advanced Image Processing Using OpenCV
Example 2. Adrian Rosebrock
- Transparent overlays with OpenCV
-
https://www.pyimagesearch.com/2016/03/07/transparent-overlays-with-opencv/
Blending Two Images
#import required packages
import cv2
#Read image 1
img1 = cv2.imread('cat_1.jpg')
#Read image 2
img2 = cv2.imread('cat_2.jpg')
#Define alpha and beta
alpha = 0.30
beta = 0.70
#Blend images
final_image = cv2.addWeighted(img1, alpha, img2, beta, 0.0)
#Show image
io.imshow(final_image)
Example 3. OpenCV docs
- Operations on arrays
-
https://docs.opencv.org/4.1.1/d2/de8/group__core__array.html
Matrix Effect
var canvas = document.getElementById('canvas'),
ctx = canvas.getContext('2d'),
canvas2 = document.getElementById('canvas2'),
ctx2 = canvas2.getContext('2d'),
// full screen dimensions
cw = window.innerWidth,
ch = window.innerHeight,
charArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'],
maxCharCount = 100,
fallingCharArr = [],
fontSize = 10,
maxColums = cw / (fontSize);
canvas.width = canvas2.width = cw;
canvas.height = canvas2.height = ch;
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
function randomFloat(min, max) {
return Math.random() * (max - min) + min;
}
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.draw = function (ctx) {
this.value = charArr[randomInt(0, charArr.length - 1)].toUpperCase();
this.speed = randomFloat(1, 5);
ctx2.fillStyle = "rgba(255,255,255,0.8)";
ctx2.font = fontSize + "px san-serif";
ctx2.fillText(this.value, this.x, this.y);
ctx.fillStyle = "#0F0";
ctx.font = fontSize + "px san-serif";
ctx.fillText(this.value, this.x, this.y);
this.y += this.speed;
if (this.y > ch) {
this.y = randomFloat(-100, 0);
this.speed = randomFloat(2, 5);
}
}
for (var i = 0; i < maxColums; i++) {
fallingCharArr.push(new Point(i * fontSize, randomFloat(-500, 0)));
}
var update = function () {
ctx.fillStyle = "rgba(0,0,0,0.05)";
ctx.fillRect(0, 0, cw, ch);
ctx2.clearRect(0, 0, cw, ch);
var i = fallingCharArr.length;
while (i--) {
fallingCharArr[i].draw(ctx);
var v = fallingCharArr[i];
}
requestAnimationFrame(update);
}
update();