PyQt で画像のビューアを作る 9 version 3
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
hogePyQt で画像のビューアを作る 9
hoge
- マウス操作改善
①フラグはキープレスで立てる
②端点の■は常時表示してマウスムーブは無視
③マウストラッキングもはずす
④右クリックで両端点の同時ドラッグとする
- ベジェカーブのリセット機能(シフトキーとか)
- ベジェの描画をやめてLUTの描画だけにしたらどうかな?少し軽くないか?
- マスクをかけれないので改善(わかりづらいので書き直した方が良いような気がする)
- LUT改善
第一段階
重複のxはパスして欠落したLUTを作る(256はないことになる)
第二段階
x値をインデクスとしたy値だけのリストをLUTを元に新たに作る
その際に欠落したxは前後のインデクスの平均で補完して、完全に256個のリストにする
欠落が複数連続していても一律で平均値補間とする(傾斜はつけない)
欠落した数が多いほど信頼性は低いが、前後のy値が同じなら問題ない
前後のY値の幅が大きいときは誤差が大きいことになる
でも平均値で補完しておけばほぼ誤差はないと思う
```
temp=[]
self.LUT=[] # これをグローバルにしよう
# first step -----------------
for l in range(256):
t=l*tt
x = (1-t)**3*p1[0] + 3*(1-t)**2*t*p2[0] + 3*(1-t)*t**2*p3[0] + t**3*p4[0]
if round(x)==last_x:
continue
y = (1-t)**3*p1[1] + 3*(1-t)**2*t*p2[1] + 3*(1-t)*t**2*p3[1] + t**3*p4[1]
last_x=round(x)
temp.append([ last_x , round(y)])
# second step -----------------
ii=0 # index of temp ( made by first step )
self.LUT.clear()
for i in range(256) :
if l[ii][0] == i :
self.LUT.append( temp[ii][1] ) # set y-value
ii += 1
else:
self.LUT.append( round((temp[ii][1] + temp[ii-1][1])/2) ) # set y-value
print( len(self.LUT) , self.LUT )
```
----
→ [目次に戻る](https://mimemo.io/m/QORbW4qkvOoda0N)
- マウス操作改善
①フラグはキープレスで立てる
②端点の■は常時表示してマウスムーブは無視
③マウストラッキングもはずす
④右クリックで両端点の同時ドラッグとする - ベジェカーブのリセット機能(シフトキーとか)
- ベジェの描画をやめてLUTの描画だけにしたらどうかな?少し軽くないか?
- マスクをかけれないので改善(わかりづらいので書き直した方が良いような気がする)
- LUT改善
第一段階
重複のxはパスして欠落したLUTを作る(256はないことになる)
第二段階
x値をインデクスとしたy値だけのリストをLUTを元に新たに作る
その際に欠落したxは前後のインデクスの平均で補完して、完全に256個のリストにする
欠落が複数連続していても一律で平均値補間とする(傾斜はつけない)
欠落した数が多いほど信頼性は低いが、前後のy値が同じなら問題ない
前後のY値の幅が大きいときは誤差が大きいことになる
でも平均値で補完しておけばほぼ誤差はないと思う
temp=[]
self.LUT=[] # これをグローバルにしよう
# first step -----------------
for l in range(256):
t=l*tt
x = (1-t)**3*p1[0] + 3*(1-t)**2*t*p2[0] + 3*(1-t)*t**2*p3[0] + t**3*p4[0]
if round(x)==last_x:
continue
y = (1-t)**3*p1[1] + 3*(1-t)**2*t*p2[1] + 3*(1-t)*t**2*p3[1] + t**3*p4[1]
last_x=round(x)
temp.append([ last_x , round(y)])
# second step -----------------
ii=0 # index of temp ( made by first step )
self.LUT.clear()
for i in range(256) :
if l[ii][0] == i :
self.LUT.append( temp[ii][1] ) # set y-value
ii += 1
else:
self.LUT.append( round((temp[ii][1] + temp[ii-1][1])/2) ) # set y-value
print( len(self.LUT) , self.LUT )
→ 目次に戻る