You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
16 lines
605 B
16 lines
605 B
import cv2
|
|
|
|
|
|
def bgr_to_yuv420(bgr_img):
|
|
# Step 1: Convert BGR to YUV 4:4:4
|
|
yuv_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2YUV)
|
|
|
|
# Step 2: Extract Y, U, V channels
|
|
Y, U, V = cv2.split(yuv_img)
|
|
|
|
# Step 3: Downsample U and V channels (Subsample by a factor of 2)
|
|
U_downsampled = cv2.resize(U, (U.shape[1] // 2, U.shape[0] // 2), interpolation=cv2.INTER_LINEAR)
|
|
V_downsampled = cv2.resize(V, (V.shape[1] // 2, V.shape[0] // 2), interpolation=cv2.INTER_LINEAR)
|
|
|
|
# Step 4: Combine Y, U_downsampled, V_downsampled to get YUV 4:2:0 format
|
|
return Y, U_downsampled, V_downsampled
|