Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Digital image processing doctests by mrvnmchm · Pull Request #1111 · TheAlgorithms/Python · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Maths/ZellersCongruence.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
import argparse
"""Zellers Congruence Birthday Algorithm
Find out what day of the week you were born on, or any other date.
"""

def zeller(date_input):

weekdays = {
'0': 'Sunday',
'1': 'Monday',
'2': 'Tuesday',
'3': 'Wednesday',
'4': 'Thursday',
'5': 'Friday',
'6': 'Saturday'
}

m = int(date_input[0] + date_input[1])
d = int(date_input[3] + date_input[4])
y = int(date_input[6] + date_input[7] + date_input[8] + date_input[9])

if m <= 2:
y = y - 1
m = m + 12
c = int(str(y)[:2])
k = int(str(y)[2:])

t = int(2.6*m - 5.39)
u = int(c / 4)
v = int(k / 4)
x = d + k
z = t + u + v + x
w = z - (2 * c)

f = round(w%7)

for day in weekdays:
if f == int(day):
print("The date " + date_input + ", is a " + weekdays[day] + ".")

if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Find out what day of the week you were born on, or any other date. Accepts birthday as a string in mm-dd-yyyy or mm/dd/yyyy format.')
parser.add_argument('date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)')
args = parser.parse_args()
zeller(args.date_input)
1 change: 0 additions & 1 deletion digital_image_processing/edge_detection/canny.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,6 @@

PI = 180


def gen_gaussian_kernel(k_size, sigma):
center = k_size // 2
x, y = np.mgrid[0 - center:k_size - center, 0 - center:k_size - center]
Expand Down
2 changes: 1 addition & 1 deletion digital_image_processing/filters/median_filter.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ def median_filter(gray_img, mask=3):
# set image borders
bd = int(mask / 2)
# copy image size
median_img = zeros_like(gray)
median_img = zeros_like(gray_img)
for i in range(bd, gray_img.shape[0] - bd):
for j in range(bd, gray_img.shape[1] - bd):
# get mask according with mask
Expand Down
62 changes: 62 additions & 0 deletions digital_image_processing/test_digital_image_processing.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
"""
PyTest's for Digital Image Processing
"""

import digital_image_processing.edge_detection.canny as canny
import digital_image_processing.filters.gaussian_filter as gg
import digital_image_processing.filters.median_filter as med
import digital_image_processing.filters.sobel_filter as sob
import digital_image_processing.filters.convolve as conv
import digital_image_processing.change_contrast as cc
from cv2 import imread, cvtColor, COLOR_BGR2GRAY
from numpy import array, uint8
from PIL import Image

img = imread(r"digital_image_processing/image_data/lena.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)

# Test: change_contrast()
def test_change_contrast():
with Image.open("digital_image_processing/image_data/lena.jpg") as img:
# Work around assertion for response
assert str(cc.change_contrast(img, 110)).startswith(
"<PIL.Image.Image image mode=RGB size=512x512 at"
)


# canny.gen_gaussian_kernel()
def test_gen_gaussian_kernel():
resp = canny.gen_gaussian_kernel(9, sigma=1.4)
# Assert ambiguous array
assert resp.all()


# canny.py
def test_canny():
canny_img = imread("digital_image_processing/image_data/lena.jpg", 0)
# assert ambiguos array for all == True
assert canny_img.all()
canny_array = canny.canny(canny_img)
# assert canny array for at least one True
assert canny_array.any()


# filters/gaussian_filter.py
def test_gen_gaussian_kernel_filter():
assert gg.gaussian_filter(gray, 5, sigma=0.9).all()


def test_convolve_filter():
# laplace diagonals
Laplace = array([[0.25, 0.5, 0.25], [0.5, -3, 0.5], [0.25, 0.5, 0.25]])
res = conv.img_convolve(gray, Laplace).astype(uint8)
assert res.any()


def test_median_filter():
assert med.median_filter(gray, 3).any()


def test_sobel_filter():
grad, theta = sob.sobel_filter(gray)
assert grad.any() and theta.any()