Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?
Mô-đun 'colorsys' trong Python được sử dụng để chuyển đổi xen kẽ các giá trị màu giữa RGB [Đỏ, Xanh lục và Xanh lam] thành ba loại khác là
- YIQ [Độ chói trong pha [Cầu phương]
- HLS [Độ bão hòa độ sáng Huế]
- HSV [Giá trị bão hòa Huế]
Có sáu chức năng được xác định trước trong mô-đun này là
- rgb_to_yiq[r,g,b]. Phải mất 3 tham số tôi. e [r,g,b] và chuyển đổi thành định dạng YIQ
- rgb_to_hls[r,g,b]. Phải mất 3 tham số tôi. e [r,g,b] và chuyển đổi sang định dạng HLS
- rgb_to_hsv[r,g,b]. Nhận 3 tham số i. e [r,g,b] và chuyển đổi sang định dạng HSV
- yiq_to_rgb[y,i,q]. Phải mất 3 tham số tôi. e [y,i,q] và chuyển đổi sang định dạng RGB
- hls_to_rgb[h,l,s]. Phải mất 3 tham số tôi. e [h,l,s] và chuyển đổi sang định dạng RGB
- hsv_to_rgb[h,s,v]. Phải mất 3 tham số tôi. e [h,s,v] và chuyển đổi sang định dạng RGB
Hạn chế
Tất cả các tham số có giá trị dấu chấm động từ 0 đến 1 ngoại trừ trong hàm yiq_to_rgb. Ở đây y dương trong khi các tham số i và q cũng có thể có giá trị dấu chấm động âm
Mã để chứng minh hoạt động của từng chức năng
Bây giờ chúng ta hãy xem một mã mẫu. Mã này là một chương trình điều khiển bằng menu để cho phép người dùng sử dụng từng tùy chọn có sẵn
Nếu bạn thích hiệu suất, tốt nhất là tránh nhập và sử dụng mã được tối ưu hóa của riêng bạn
Đây là mã chính xác từ colorsys được sửa đổi một chút để làm cho mã byte nhanh hơn một chút
def hsv_to_rgb[h, s, v]:
if s == 0.0: return [v, v, v]
i = int[h*6.] # XXX assume int[] truncates!
f = [h*6.]-i; p,q,t = v*[1.-s], v*[1.-s*f], v*[1.-s*[1.-f]]; i%=6
if i == 0: return [v, t, p]
if i == 1: return [q, v, p]
if i == 2: return [p, v, t]
if i == 3: return [p, q, v]
if i == 4: return [t, p, v]
if i == 5: return [v, p, q]
đầu ra
>>> hsv_to_rgb[359,1,1]
[1, 0.0, 0.0]
Sử dụng chuỗi if như trên thực sự nhanh hơn sử dụng elif
Sử dụng trình bao bọc, như trong câu trả lời của Cyber, cần thêm một vài bước để trình thông dịch thực hiện.
Thêm vào đó, vòng lặp for trong ví dụ của Cyber là một sát thủ thực sự khi được sử dụng như vậy
Nếu bạn muốn hiệu suất cao hơn một chút, chỉ cần làm điều này.
[Tôi sẽ không nói đây là hiệu suất tốt nhất có thể, nhưng nó chắc chắn tốt hơn]
def hsv_to_rgb[h, s, v]:
if s == 0.0: v*=255; return [v, v, v]
i = int[h*6.] # XXX assume int[] truncates!
f = [h*6.]-i; p,q,t = int[255*[v*[1.-s]]], int[255*[v*[1.-s*f]]], int[255*[v*[1.-s*[1.-f]]]]; v*=255; i%=6
if i == 0: return [v, t, p]
if i == 1: return [q, v, p]
if i == 2: return [p, v, t]
if i == 3: return [p, q, v]
if i == 4: return [t, p, v]
if i == 5: return [v, p, q]
^ điều này đảm bảo đầu ra int[] có phạm vi 255 [đầu vào vẫn như cũ]
>>> hsv_to_rgb[359./360.,1,1]
[255, 0, 0]
MẸO. tránh xa bên thứ 3 nếu có thể, hãy thử cách tiếp cận trực tiếp nếu bạn có thể.
loại trừ. các tiện ích mở rộng C đã biên dịch, chẳng hạn như PIL hoặc NumPy hoặc các trình bao bọc ctypes, chẳng hạn như PyOpenGL [sử dụng DLL]
Mô-đun colorsys
xác định chuyển đổi hai chiều giá trị màu giữa các màu được biểu thị trong không gian màu RGB [Đỏ Lục Lam] được sử dụng trong màn hình máy tính và ba hệ tọa độ khác. YIQ, HLS [Độ bão hòa ánh sáng Huế] và HSV [Giá trị bão hòa Huế]. Các tọa độ trong tất cả các không gian màu này là các giá trị dấu phẩy động. Trong không gian YIQ, tọa độ Y nằm trong khoảng từ 0 đến 1, nhưng tọa độ I và Q có thể dương hoặc âm. Trong tất cả các không gian khác, tọa độ đều nằm trong khoảng từ 0 đến 1
Mô-đun colorsys
xác định các chức năng sau
colorsys.rgb_to_yiq[r, g, b]
Chuyển đổi màu từ tọa độ RGB sang tọa độ YIQ
________số 8Chuyển đổi màu từ tọa độ YIQ sang tọa độ RGB
colorsys.rgb_to_hls[r, g, b]
Chuyển đổi màu từ tọa độ RGB sang tọa độ HLS
>>> hsv_to_rgb[359,1,1]
[1, 0.0, 0.0]
0Chuyển đổi màu từ tọa độ HLS sang tọa độ RGB
>>> hsv_to_rgb[359,1,1]
[1, 0.0, 0.0]
1Chuyển đổi màu từ tọa độ RGB sang tọa độ HSV
>>> hsv_to_rgb[359,1,1]
[1, 0.0, 0.0]
2Chuyển đổi màu từ tọa độ HSV sang tọa độ RGB
Ví dụ
>>> import colorsys >>> colorsys.rgb_to_hsv[0.2, 0.4, 0.4] [0.5, 0.5, 0.4] >>> colorsys.hsv_to_rgb[0.5, 0.5, 0.4] [0.2, 0.4, 0.4]