Convert không gian màu RBG sang HSV. Công thức lỗi chia cho 0

Hello
mình chuyển rbg về hsv theo công thức sau

https://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html

Nhưng như công thức trên thì nếu như r = g = b = 255 (màu trắng) thì gặp lỗi chia cho 0 khi tính giá trị cho h
ví dụ 1 điểm ảnh r = g = b = 255
-> v = 255, min(r,b,g) = 255
mà v = r = 255 -> h = 60*(g-b)/ (v-min(r,b,g)) = 60 * (255-255) / 255 -255 = 0/0
:smile: là sao nhỉ
Thank you

H, S, V là kiểu số thực, có thể có giá trị là n/a (khi R=G=B). Trước khi chuyển về HSV phải đổi RGB từ 0-255 sang 0-1 số thực nữa đâu phải lấy 255

lúc chuyển về số nguyên 8 bit thì nó chuyển về H=0, ko sợ đụng với mấy thằng khác vì khi R=G=B thì (H,S,V) có giá trị là (0,0,R), còn với các màu khác max != min thì (H,S) khác (0,0): max != min nên với max != 0 thì S có giá trị khác 0, còn nếu S = 0 thì max = min = 0, trái với giả thuyết ở đây là max != min

2 Likes

có nhiều công thức khác nhau lắm anh, em tìm được mấy công thức, h mà n/a khi s = 0 và gán h = 0 luôn sẽ tránh được lỗi chia cho 0, nhưng em đang không biết khâu hiển thị ntn khi hsv là kiểu thực, % :3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?