Draw a rectangle around a region of interest in OpenCV Python

# Python program to explain cv2.rectangle() method 

# importing cv2 
import cv2 

# path 
path = r'C:\Users\Rajnish\Desktop\geeksforgeeks\geeks.png'

# Reading an image in default mode 
image = cv2.imread(path) 

# Window name in which image is displayed 
window_name = 'Image'

# Start coordinate, here (5, 5) 
# represents the top left corner of rectangle 
start_point = (5, 5) 

# Ending coordinate, here (220, 220) 
# represents the bottom right corner of rectangle 
end_point = (220, 220) 

# Blue color in BGR 
color = (255, 0, 0) 

# Line thickness of 2 px 
thickness = 2

# Using cv2.rectangle() method 
# Draw a rectangle with blue line borders of thickness of 2 px 
image = cv2.rectangle(image, start_point, end_point, color, thickness) 

# Displaying the image 
cv2.imshow(window_name, image) 
k = cv2.waitKey(0) # 0==wait forever

References
https://www.geeksforgeeks.org/python-opencv-cv2-rectangle-method/
https://stackoverflow.com/questions/23720875/how-to-draw-a-rectangle-around-a-region-of-interest-in-python

Execute all functions in a file without explicitly calling them in Python

def some_magic():
    import a
    for i in dir(a):
        item = getattr(a,i)
        if callable(item):
            item()

if __name__ == '__main__':
    some_magic()
#!/usr/local/bin/python3
import inspect
import sys


def f1():
    print("f1")


def f2():
    print("f2")


def some_magic(mod):
    all_functions = inspect.getmembers(mod, inspect.isfunction)
    for key, value in all_functions:
        if str(inspect.signature(value)) == "()":
            value()

if __name__ == '__main__':
    some_magic(sys.modules[__name__])
members = inspect.getmembers(self)

for key, value in members:

    if key.startswith("run_"):
        if callable(value):
            if value():
                break

References
https://stackoverflow.com/questions/28643534/is-there-a-way-in-python-to-execute-all-functions-in-a-file-without-explicitly-c

Convert Image to RGB and Grayscale using PIL

im = Image.open("audacious.png")
rgb_im = im.convert('RGB')
rgb_im.save('audacious.jpg')
from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')

LA mode has luminosity (brightness) and alpha. If you use LA mode, then greyscale.png will be an RGBA image with the alpha channel of image.png preserved. If you use L mode, then greyscale.png will be an RGB image (with no alpha).

References
https://stackoverflow.com/questions/48248405/cannot-write-mode-rgba-as-jpeg
https://stackoverflow.com/questions/12201577/how-can-i-convert-an-rgb-image-into-grayscale-in-python

Iterate over Excel columns using openpyxl

from openpyxl import Workbook, worksheet, load_workbook

wb: Workbook = load_workbook(filename="data.xlsx")
ws: worksheet = wb.active

end_column = ws.max_column
start_column = 1
column_index = start_column

while column_index <= end_column:
    # here we just want first row
    print(ws.cell(1, column_index).value)
    column_index += 1

 

Iterate over Excel rows using openpyxl

from openpyxl import Workbook, worksheet, load_workbook

wb: Workbook = load_workbook(filename="data.xlsx")
ws: worksheet = wb.active

end_row = ws.max_row
# start after header
start_row = 2
row_index = start_row

while row_index <= end_row:
    print(ws["A" + str(row_index)].value)
    print(ws["B" + str(row_index)].value)
    print(ws["C" + str(row_index)].value)
    print(ws["D" + str(row_index)].value)
    print(ws["E" + str(row_index)].value)
    row_index += 1

 

Open Image in Python PIL

# Imports PIL module 
from PIL import Image 

# open method used to open different extension image file 
im = Image.open(r"C:\Users\System-Pc\Desktop\ybear.jpg") 

# This method will show image in any image viewer 
im.show() 
# Imports PIL module 
from PIL import Image 

# open method used to open different extension image file 
im = Image.open(r"C:\Users\System-Pc\Desktop\lion.png") 

# This method will show image in any image viewer 
im.show() 

References
https://www.geeksforgeeks.org/python-pil-image-open-method/

Locate something on the screen using PyScreeze on Python

  • locateOnScreen(image, grayscale=False) – Returns (left, top, width, height) coordinate of first found instance of the image on the screen. Returns None if not found on the screen.
  • locateCenterOnScreen(image, grayscale=False) – Returns (x, y) coordinates of the center of the first found instance of the image on the screen. Returns None if not found on the screen.
  • locateAllOnScreen(image, grayscale=False) – Returns a generator that yields (left, top, width, height) tuples for where the image is found on the screen.
  • locate(needleImage, haystackImage, grayscale=False) – Returns (left, top, width, height) coordinate of first found instance of needleImage in haystackImage. Returns None if not found on the screen.
  • locateAll(needleImage, haystackImage, grayscale=False) – Returns a generator that yields (left, top, width, height) tuples for where needleImage is found in haystackImage.

 

import pyscreeze
button7location = pyscreeze.locateOnScreen('calc7key.png')
button7location
(1416, 562, 50, 41)
button7x, button7y = pyscreeze.center(button7location)
button7x, button7y
(1441, 582)
pyscreeze.click(button7x, button7y)  # clicks the center of where the 7 button was found
import pyscreeze
x, y = pyscreeze.locateCenterOnScreen('calc7key.png')
pyscreeze.click(x, y)
import pyscreeze
for pos in pyscreeze.locateAllOnScreen('someButton.png')
...   print(pos)
...
(1101, 252, 50, 50)
(59, 481, 50, 50)
(1395, 640, 50, 50)
(1838, 676, 50, 50)
list(pyscreeze.locateAllOnScreen('someButton.png'))
[(1101, 252, 50, 50), (59, 481, 50, 50), (1395, 640, 50, 50), (1838, 676, 50, 50)]
import pyscreeze
button7location = pyscreeze.locateOnScreen('calc7key.png', grayscale=True)
button7location
(1416, 562, 50, 41)

References
https://pypi.org/project/PyScreeze/