How to Use the convertScaleAbs() Function in Opencv?

I am trying to convert an image back to grayscale after applying Sobel filtering on it. I have the following code:

import numpy as np
import matplotlib.pyplot as plt
import cv2

image = cv2.imread("train.jpg")
img = np.array(image, dtype=np.uint8)

#convert to greyscale
img_grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#remove noise
img_smooth = cv2.GaussianBlur(img_grey, (13,13), 0)

sobely = cv2.Sobel(img_smooth,cv2.CV_64F,0,1,ksize=9)

I want to convert the image sobely back to greyscale using the convertScaleAbs() function.

I know that the function takes a source (the image to be converted to grayscale) and destination array as arguments, but I am not sure what is the best way to go about creating the destination array.

Any insights are appreciated.

2 Answers

You can try:

gray = cv2.convertScaleAbs(sobely, alpha=255/sobely.max())
plt.imshow(gray, cmap='gray')

You can accept the default arguments for the alpha and beta arguments, so the call is simply:

graySobel = cv.convertScaleAbs(sobely)

Then you can call adaptiveThreshold:

thres = cv2.adaptiveThreshold(graySobel, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                          cv2.THRESH_BINARY, 73, 2)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest