hogeoge enhancer version 3

2019/07/09 11:34 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
hogeoge
# ヒストグラム修正

```
mouseMoveEvent(self,e):
 c=img.getpixcel( e.pos().x() , e.pos().y()) 
 # c=img.getpixcel( e.pos().x() , -( e.pos().y() - img.width() ) ) # 反転するのかな? 
 print('pos :' , e.pos() , 'color_rgb :' , c )
# init
# self.rv=180 # reverse value ( height)

mousePressEvent(self,e):
 c=img.getpixcel( e.pos().x() , e.pos().y()) 
 # c=img.getpixcel( e.pos().x() , -( e.pos().y() - img.width() ) ) # 反転するのかな? 
 self.enhance_white(c):
        # red draw
        cpoint=QPointF( 0 , self.rv ) # current point
        painter.setPen( QPen( Qt.red , 2 ) )
        for i in range(255):
            if self.his[i] == self.rv :
                continue
            painter.drawLine( cpoint , QPointF( i , self.his[i] )  )
            cpoint = QPointF( i , self.his[i] )

enhance_white(self,color):
 clist=[[],[],[]] 
 for c in range(3):
  color[c] = 1 if color[c] == 0 else color[c]
  ratio=255/color[c]
  clist[c]=[ round( i * ratio ) if i < color[c] else 255 for i in range(256)] 

        im = self.img.convert('RGB')
        size = im.size
        im2 = Image.new('RGB',size)
        data = im.getdata()
        data2=[( clist[0][i[0]] , clist[1][i[1]] , clist[2][i[2]] )  for i in data ]
         im2.putdata(data2)
        self.enhanced=im2.copy()
        del im2
        self.showimage( )
        # green draw
        cpoint=QPointF( 0 , self.rv ) # reset current point
```
---



# ベジェ曲線の座標の求め方について
- Qtはベジェ曲線を描画しているのだから座標も持ってるはずだと思いドキュメントを見てみたらこんなメッソドがあった
QPointF QPainterPath.pointAtPercent (self, float t)
このtは0-1で指定することになっていて、ベジェそのものですね
- Qtもあくまでtベースでしか値は返してくれないって事だな
内部的にはどういう実装なんだろう?
曲線とは言ってもPCだから全てはドットの描画でしかないはずだ
でもドットだとx値が飛ぶところでは間が空くはずだ
でもパスだからどんなに拡大しても綺麗に描画出来るように実装されてるはずだ
やはり全てのx値を計算して求めてるんだろうか?
だとしたらそういう関数を用意してくれても良いと思うんだが・・・
- 今は自分でx,yを求めてるが、Qtの関数を使ってみるか???
結果が同じかどうかを調べてみるとか・・・
意味ないかな? 

      

ヒストグラム修正

# init
# self.rv=180 # reverse value ( height)

        # red draw
        cpoint=QPointF( 0 , self.rv ) # current point
        painter.setPen( QPen( Qt.red , 2 ) )
        for i in range(255):
            if self.his[i] == self.rv :
                continue
            painter.drawLine( cpoint , QPointF( i , self.his[i] )  )
            cpoint = QPointF( i , self.his[i] )

        # green draw
        cpoint=QPointF( 0 , self.rv ) # reset current point

ベジェ曲線の座標の求め方について

  • Qtはベジェ曲線を描画しているのだから座標も持ってるはずだと思いドキュメントを見てみたらこんなメッソドがあった
    QPointF QPainterPath.pointAtPercent (self, float t)
    このtは0-1で指定することになっていて、ベジェそのものですね
  • Qtもあくまでtベースでしか値は返してくれないって事だな
    内部的にはどういう実装なんだろう?
    曲線とは言ってもPCだから全てはドットの描画でしかないはずだ
    でもドットだとx値が飛ぶところでは間が空くはずだ
    でもパスだからどんなに拡大しても綺麗に描画出来るように実装されてるはずだ
    やはり全てのx値を計算して求めてるんだろうか?
    だとしたらそういう関数を用意してくれても良いと思うんだが・・・
  • 今は自分でx,yを求めてるが、Qtの関数を使ってみるか???
    結果が同じかどうかを調べてみるとか・・・
    意味ないかな?