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[0]
cols = frame.shape[1]
for i in range(0, rows):
for j in range(0, cols):
R = frame[i, j][2]
G = frame[i, j][1]
B = frame[i, j][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
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.
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
thanks my friend but how can program konw the values R G B with this function ?
Try this code:
thanks my friend :)
Pas de problème. :D
and cvtcolor with parameter cv.COLOR_BGR2YCrCb?
@LBerger -- Thanks for pointing that out.
problem (error syntax ) : in loop i , j
for i in range(0, rows): for j in range(0, cols): R = frame[i, j][2] G = frame[i, j][1] B = frame[i, j][0]