Ask Your Question

# how can i discover the values of Y,cb,cr on one pixel (picture) with python

I am doing a project with image processing with opencv. I am stuck in this stage and thanks in advance

edit retag close merge delete

## Comments

The Wikipedia page on Y Cb Cr has many formulas for converting from RGB.

https://en.wikipedia.org/wiki/YCbCr#I...

Is this what you're looking for?

i don't understand how can i write this in python with pixel for exemple x = img[360,792]
print(x) ===> [125 122 100] how can i have the values now of Y , cb , cr of this pixel ?

R = 255 G = 127 B = 0

Y =   16 +  65.738*R/256 + 129.057*G/256 +  25.064*B/256
Cb = 128 -  37.945*R/256 -  74.494*G/256 + 112.439*B/256
Cr = 128 + 112.439*R/256 -  94.154*G/256 -  18.285*B/256

print(Y)
print(Cb)
print(Cr)


thanks my friend but how can program konw the values R G B with this function ?

1

Try this code:

import cv2
import numpy

frame = cv2.imread('sparks.png')

if frame is None:
print('Error loading image')
exit()

rows = frame.shape
cols = frame.shape

for i in range(0, rows):
for j in range(0, cols):
R = frame[i, j]
G = frame[i, j]
B = frame[i, j]

Y =   16 +  65.738*R/256 + 129.057*G/256 +  25.064*B/256
Cb = 128 -  37.945*R/256 -  74.494*G/256 + 112.439*B/256
Cr = 128 + 112.439*R/256 -  94.154*G/256 -  18.285*B/256

1
1

problem (error syntax ) : in loop i , j
for i in range(0, rows): for j in range(0, cols): R = frame[i, j] G = frame[i, j] B = frame[i, j]

## 1 answer

Sort by » oldest newest most voted Please mark my answer as correct (click the check mark), and please make sure to give me an upvote. :) import cv2
import numpy

frame = cv2.imread('sparks.png')

if frame is None:
print('Error loading image')
exit()

rows = frame.shape
cols = frame.shape

for i in range(0, rows):
for j in range(0, cols):
R = frame[i, j]
G = frame[i, j]
B = frame[i, j]

Y =   16 +  65.738*R/256 + 129.057*G/256 +  25.064*B/256
Cb = 128 -  37.945*R/256 -  74.494*G/256 + 112.439*B/256
Cr = 128 + 112.439*R/256 -  94.154*G/256 -  18.285*B/256


Thanks to LBerger for this simpler OpenCV code:

ycrcb_frame = cv2.cvtColor(bgr_frame, cv2.COLOR_BGR2YCrCb)


... this is not to say that OpenCV uses the same constants as used here in the manual approach. I think it's a matter of looking into the OpenCV source code.

more

## Comments

1

@sjhalayka and @Toutou if you want to extract R,G,B or any other layers from an image. Use this B,G,R=image[...,0],image[...,1],image[...,2] instead of a loop its much faster

@Santhosh1 -- Can you please put that in a more comprehensive code, perhaps as your own answer (I'll upvote it)? I'm not quite sure I get it.

Official site

GitHub

Wiki

Documentation

## Stats

Asked: 2018-05-09 16:00:17 -0500

Seen: 306 times

Last updated: May 10 '18