- Def channelconvert(inc, tartype, imglist): # conversion among BGR, gray and y if inc 3 and tartype 'gray': # BGR to gray graylist = cv2.cvtColor(img, cv2.COLORBGR2GRAY) for img in imglist return np.expanddims(img, axis=2) for img in graylist elif inc 3 and tartype 'y': # BGR to y ylist = bgr2ycbcr(img, onlyy=True.
- The following are 30 code examples for showing how to use cv2.COLORRGB2GRAY.These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example.
Consider a color image, given by its red, green, blue components R, G, B. The range of pixel values is often 0 to 255. Color images are represented as multi-dimensional arrays - a collection of three two-dimensional arrays, one each for red, green, and blue channels. Each one has one value per pixel and their ranges are identical. For grayscale images, the result is a two-dimensional array with the number of rows and columns equal to the number of pixel rows and columns in the image.
We present some methods for converting the color image to grayscale:
Parameter: cv2.COLORBGR2RGB – BGR image is converted to RGB.; cv2.COLORRGB2BGR – RGB image is converted to BGR. Converting a BGR image to RGB and vice versa can have several reasons, one of them being that several image processing libraries have different pixel orderings. Convert RGB to GrayScale Image Using python opencv Source Code: import numpy import cv2 img = cv2.imread('leena.jpg') gray = cv2.cvtColor(img,cv2.COLORBGR2G.
Weighted average
This is the grayscale conversion algorithm that OpenCV’s cvtColor()
use (see the documentation)
The formula used is:
[Y = 0.299times R + 0.587 times G + 0.114 times B]Let’s compare it with the original function in OpenCV
:
Average method
Average method is the most simple one. You just have to take the average of three colors. Since its an RGB image, so it means that you have add R with G with B and then divide it by 3 to get your desired grayscale image.
Since the three different colors have three different wavelength and have their own contribution in the formation of image, so we have to take average according to their contribution, not done it averagely using average method. Right now what we are doing is 33% of Red, 33% of Green, 33% of Blue. We are taking 33% of each, that means, each of the portion has same contribution in the image. But in reality that is not the case. The solution to this has been given by luminosity method.
The luminosity method
This method is a more sophisticated version of the average method. It also averages the values, but it forms a weighted average to account for human perception. Through many repetitions of carefully designed experiments, psychologists have figured out how different we perceive the luminance or red, green, and blue to be. They have provided us a different set of weights for our channel averaging to get total luminance. The formula for luminosity is:
Cv2 Rgb To Gray
Cv2 Rgb To Gray Blue
[Z = 0.2126times R + 0.7152 G + 0.0722 B]According to this equation, Red has contribute 21%, Green has contributed 72% which is greater in all three colors and Blue has contributed 7%.
Cv2 Rgb To Grayscale
As you can see here, that the image has now been properly converted to grayscale using weighted method. As compare to the result of average method, this image is more brighter thank average method.