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...
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)