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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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.