Uploaded by sferkaese

Unit-2 Python Code

advertisement
Geometric Transformations
1.Translation:
import cv2
import numpy as np
# Load the image
image = cv2.imread('input_image.jpg')
# Define the translation matrix
tx = 50 # Translation in the x-direction
ty = 30 # Translation in the y-direction
translation_matrix = np.float32([[1, 0, tx], [0, 1, ty]])
# Perform the translation using the warpAffine function
translated_image = cv2.warpAffine(image, translation_matrix, (image.shape[1], image.shape[0]))
# Display the original and translated images
cv2.imshow('Original Image', image)
cv2.imshow('Translated Image', translated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.Scaling
import cv2
# Load the image
image = cv2.imread('input_image.jpg')
# Define the target width in pixels and height in pixels
target_width = 800
target_height = 600
# Resize the image using cv2.resize()
resized_image = cv2.resize(image, (target_width, target_height), interpolation=cv2.INTER_LINEAR)
#Interpolation gives the smoothness of the image, while resizing (Bilinear Interpolation)
# Display the original and resized images
cv2.imshow('Original Image', image)
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.Rotation:
import cv2
# Load the image
image = cv2.imread('input_image.jpg')
# Define the rotation angle in degrees
angle = 45
# Get the center of the image
height, width = image.shape[:2]
#[:2] means slicing the first two elements like height and width
center = (width / 2, height / 2)
# Create the rotation matrix
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)
# A scale value of 1.0 means no scaling will be applied; the image will retain its original size after rotation.
# Apply the rotation using cv2.warpAffine()
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
# Display the original and rotated images
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.Shearing:
import cv2
import numpy as np
# Load the image
image = cv2.imread('input_image.jpg')
# Define the shearing factor
shear_factor = 0.3 # Adjust this value to control the shearing amount
#if shear_factor is set to 0.3, it means that each row will be displaced to the right by 30% of its height. Similarly, if you use a negative shear_factor of -0.3, each row will be displaced to the left by 30% of its height.
# Define the shearing matrix
shear_matrix = np.array([[1, shear_factor, 0],
[0, 1, 0]], dtype=np.float32)
# Apply the shearing using cv2.warpAffine()
sheared_image = cv2.warpAffine(image, shear_matrix, (image.shape[1], image.shape[0]))
# Display the original and sheared images
cv2.imshow('Original Image', image)
cv2.imshow('Sheared Image', sheared_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.Sobel Filter
import cv2
# Load the image in grayscale
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)
# Apply Sobel operator to get gradients in the x and y directions
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
# Convert the gradients back to uint8 format
sobel_x = cv2.convertScaleAbs(sobel_x)
sobel_y = cv2.convertScaleAbs(sobel_y)
# Combine the gradients using the magnitude formula
gradient_magnitude = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0)
# Display the original image and gradient magnitude
cv2.imshow('Original Image', image)
cv2.imshow('Gradient Magnitude', gradient_magnitude)
cv2.waitKey(0)
cv2.destroyAllWindows()
6.Canny Filter:
7.import cv2
# Load the image in grayscale
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)
# Apply Canny edge detection
canny_edges = cv2.Canny(image, threshold1=100, threshold2=200)
# Display the original image and Canny edge detection results
cv2.imshow('Original Image', image)
cv2.imshow('Canny Edges', canny_edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
Download