Spaces:
Sleeping
Sleeping
first commit
Browse files- app.py +114 -0
- requirements.txt +4 -0
app.py
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import numpy as np
|
2 |
+
import streamlit as st
|
3 |
+
import cv2
|
4 |
+
import pandas as pd
|
5 |
+
|
6 |
+
# HSV H(色相)の変更
|
7 |
+
def changedH(bgr_img, shift):
|
8 |
+
hsvimage = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2HSV_FULL) # BGR->HSV
|
9 |
+
hi = hsvimage[:,:,0].astype(np.int32)
|
10 |
+
if shift < 0:
|
11 |
+
nhi = hi.flatten()
|
12 |
+
for px in nhi:
|
13 |
+
if px < 0:
|
14 |
+
px = 255 - px
|
15 |
+
nhi = nhi.reshape(hsvimage.shape[:2])
|
16 |
+
hi = nhi.astype(np.uint8)
|
17 |
+
chimg = (hi + shift) % 255
|
18 |
+
hsvimage[:,:,0] = chimg
|
19 |
+
hsv8 = hsvimage.astype(np.uint8)
|
20 |
+
return cv2.cvtColor(hsv8,cv2.COLOR_HSV2BGR_FULL) # HSV->BGR
|
21 |
+
|
22 |
+
# HSV S(彩度),V(明度)の変更
|
23 |
+
def changedSV(bgr_img, alpha, beta, color_idx):
|
24 |
+
hsvimage = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2HSV_FULL) # BGR->HSV
|
25 |
+
hsvf = hsvimage.astype(np.float32)
|
26 |
+
hsvf[:,:,color_idx] = np.clip(hsvf[:,:,1] * alpha+beta, 0, 255)
|
27 |
+
hsv8 = hsvf.astype(np.uint8)
|
28 |
+
return cv2.cvtColor(hsv8,cv2.COLOR_HSV2BGR_FULL)
|
29 |
+
|
30 |
+
# HSV S(彩度)の変更
|
31 |
+
def changedS(bgr_img, alpha, beta):
|
32 |
+
return changedSV(bgr_img, alpha, beta, 1)
|
33 |
+
|
34 |
+
# HSV V(明度)の変更
|
35 |
+
def changedV(bgr_img, alpha, beta):
|
36 |
+
return changedSV(bgr_img, alpha, beta, 2)
|
37 |
+
|
38 |
+
def main():
|
39 |
+
|
40 |
+
st.subheader("RGB値")
|
41 |
+
R = st.slider(label='Red',
|
42 |
+
min_value=0,
|
43 |
+
max_value=255,
|
44 |
+
value=100,
|
45 |
+
)
|
46 |
+
st.write(f'{R}')
|
47 |
+
|
48 |
+
G = st.slider(label='Green',
|
49 |
+
min_value=0,
|
50 |
+
max_value=255,
|
51 |
+
value=100,
|
52 |
+
)
|
53 |
+
st.write(f'{G}')
|
54 |
+
|
55 |
+
B = st.slider(label='Blue',
|
56 |
+
min_value=0,
|
57 |
+
max_value=255,
|
58 |
+
value=100,
|
59 |
+
)
|
60 |
+
st.write(f'{B}')
|
61 |
+
|
62 |
+
R_nmp = np.array([R] * 80 * 200).reshape(80, 200).astype(np.uint8)
|
63 |
+
G_nmp = np.array([G] * 80 * 200).reshape(80, 200).astype(np.uint8)
|
64 |
+
B_nmp = np.array([B] * 80 * 200).reshape(80, 200).astype(np.uint8)
|
65 |
+
img_nmp = np.stack([R_nmp, G_nmp, B_nmp], 2)
|
66 |
+
|
67 |
+
st.image(
|
68 |
+
img_nmp,
|
69 |
+
width=640,
|
70 |
+
caption=f"R:{R} G:{G} B:{B}"
|
71 |
+
)
|
72 |
+
|
73 |
+
# HSV変換
|
74 |
+
img_hsv = cv2.cvtColor(img_nmp, cv2.COLOR_RGB2HSV)
|
75 |
+
|
76 |
+
# HSV値を取得
|
77 |
+
H = img_hsv.T[0].flatten().min()
|
78 |
+
S = img_hsv.T[1].flatten().min()
|
79 |
+
V = img_hsv.T[2].flatten().min()
|
80 |
+
|
81 |
+
# 表示
|
82 |
+
st.subheader("HSV値")
|
83 |
+
st.info(f"H:{H} S:{S} V:{V}")
|
84 |
+
|
85 |
+
# RGBのサンプル
|
86 |
+
df = pd.DataFrame(
|
87 |
+
[
|
88 |
+
["白", 255, 255, 255],
|
89 |
+
["黄色", 255, 255, 0],
|
90 |
+
["薄い灰色", 192, 192, 192],
|
91 |
+
["水色", 0, 255, 255],
|
92 |
+
["黄緑", 0, 255, 0],
|
93 |
+
["灰色", 128, 128, 128],
|
94 |
+
["黄土色", 128, 128, 0],
|
95 |
+
["濃い桃色", 255, 0, 255],
|
96 |
+
["青緑", 0, 128, 128],
|
97 |
+
["赤", 255, 0, 0],
|
98 |
+
["緑", 0, 128, 0],
|
99 |
+
["紫", 128, 0, 128],
|
100 |
+
["茶色", 128, 0, 0],
|
101 |
+
["青", 0, 0, 255],
|
102 |
+
["紺", 0, 0, 128],
|
103 |
+
["黒", 0, 0, 0],
|
104 |
+
],
|
105 |
+
columns = ["色", "R", "G", "B"]
|
106 |
+
)
|
107 |
+
|
108 |
+
st.sidebar.subheader("RGBサンプル")
|
109 |
+
st.sidebar.table(df.set_index("色"))
|
110 |
+
st.sidebar.markdown('日立HP[JP1/Automatic Job Management System 3 操作ガイド 11.11 RGB値による色の指定](http://itdoc.hitachi.co.jp/manuals/3020/30203S0933/AJSV0206.HTM) より引用')
|
111 |
+
|
112 |
+
|
113 |
+
if __name__ == '__main__':
|
114 |
+
main()
|
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
numpy==1.21.4
|
2 |
+
streamlit==1.2.0
|
3 |
+
opencv-python==4.5.4.58
|
4 |
+
pandas==1.3.4
|