この前、ブラウザの画面キャプチャ用にブラウザキャプチャ用Chrome Extension:FireShotを紹介したのだが、今度はスクリーンショットを撮った後に簡単に隠したいとこにぼかしやハイライトをつけたいなぁと思った時、FireShotではできなかったので、もう一度探してみるとこに。
そこで見つかったのが拡張機能Awesome Screenshotだった。
Chromeのツールバーからこんな感じで選べる。
例えばスクリーンショットに映った個人名などのあまり人に見せたくないものにぼかしを入れたい場合、Awesome Screenshotでスクリーンショットを撮った後、この水滴みたいな部分をクリックする。
するとシェイプでぼかしを入れたい部分を範囲選択できるので、これでどんどんぼかすことができる。
ただし、ローカルに保存するファイル名がWEBページのタイトルしかつかないので、同じページでいくつかのスクリーンショットを撮る場合はいちいち名前を変えてやらないといけない。
前回紹介したブラウザキャプチャ用Chrome Extension:FireShotだとデフォルトはWEBページのタイトルと時分秒などを設定でテンプレートとして設定できるので便利。
なので、スクリーンショットに簡単に加工を付けたい時と、ただ撮るだけの時とは使い分けるようにしてる。しかもChromeで完結しているのでWindowsやMacなどOSによって使い勝手のいいアプリを探す手間も省けて便利。
2016年1月31日日曜日
2016年1月28日木曜日
イメージキャプチャ用Chrome Extension:FireShot
先に言っておくと小ネタだ。
ちょっとブラウザでスックリーンショットを撮りたいけど、ツールバーとかタブとか見えてていやだなぁって思ってしまうタチなので、余計なものを省いてスクリーンショットを撮ろうといちいち範囲選択してって割とめんどくさい。
そんな時にいいスクリーンショット取れるChrome Extensionないかなぁと思って探してたらあったのがこのFireShot。試したら割と便利だった。
こんな感じで色々と撮れる範囲を選べる。
設定でファイル名を選べたり、JPGとPNGで選べるし、ショートカットも使える。日本語も対応。少し変な日本語多いけどw
普通にブラウザごとまるっとスクリーンショットを撮ったらこう。
FireShotで見える部分だけで撮るとこうなる。ツールバーとかタブとかの余計な部分がなくなっていい感じ。
全部のページを撮るとこう。
これでさくっと撮れて便利だ。
ちょっとブラウザでスックリーンショットを撮りたいけど、ツールバーとかタブとか見えてていやだなぁって思ってしまうタチなので、余計なものを省いてスクリーンショットを撮ろうといちいち範囲選択してって割とめんどくさい。
そんな時にいいスクリーンショット取れるChrome Extensionないかなぁと思って探してたらあったのがこのFireShot。試したら割と便利だった。
こんな感じで色々と撮れる範囲を選べる。
設定でファイル名を選べたり、JPGとPNGで選べるし、ショートカットも使える。日本語も対応。少し変な日本語多いけどw
普通にブラウザごとまるっとスクリーンショットを撮ったらこう。
FireShotで見える部分だけで撮るとこうなる。ツールバーとかタブとかの余計な部分がなくなっていい感じ。
全部のページを撮るとこう。
これでさくっと撮れて便利だ。
2015年11月16日月曜日
OpenCV Tutorial(4)〜特定画像の検出
ドラクエの戦闘画面からカンダタの子分を取り出してみた。
元画像のこれから
これを取り出してみる。
おぉ、とりだせた。
元画像のこれから
これを取り出してみる。
import cv2 import numpy as np from matplotlib import pyplot as plt img_rgb = cv2.imread('dq.jpeg') img_rgb2 = img_rgb.copy() img_gray = cv2.cvtColor(img_rgb2, cv2.COLOR_BGR2GRAY) template = cv2.imread('template.png',0) w, h = template.shape[::-1] res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where( res >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(img_rgb2, pt, (pt[0] + w, pt[1] + h), (255,0,0), 1) plt.subplot(121),plt.imshow(img_rgb) plt.title('Matching Result'), plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(img_rgb2) plt.title('Detected Point'), plt.xticks([]), plt.yticks([]) plt.show()
おぉ、とりだせた。
2015年11月15日日曜日
OpenCV Tutorial(3)〜画像の輪郭検出
本当ならガウシアンフィルタにかけてノイズの提言をさせてから、色相の勾配を該当ピクセルの近傍と比較して計算して...ってやらないといけないわけだけど、OpenCVに関しては、関数を一発呼ぶだけでやってくれる。
すげえ。
この辺からだいたい分かっとく必要のあるところと、飛ばしてもいいところを見極めるのが難しくなってきた。そのおかげでか進捗が少ない。。。
すげえ。
import cv2 import numpy as np from matplotlib import pyplot as plt # グレースケールで読み込み img = cv2.imread('20120129-00000000-jijp-000-0-view-thumb-450x300-8462.jpg',0) # 閾値の上限200、下限を100に指定 edges = cv2.Canny(img,100,200) plt.subplot(121),plt.imshow(img,cmap = 'gray') plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(edges,cmap = 'gray') plt.title('Edge Image'), plt.xticks([]), plt.yticks([]) plt.show()
今日の作業
この辺からだいたい分かっとく必要のあるところと、飛ばしてもいいところを見極めるのが難しくなってきた。そのおかげでか進捗が少ない。。。
2015年11月13日金曜日
OpenCV Tutorial(2)〜画像の平滑化
Smoothing Images
画像の平滑化手法(Smoothing Images)に幾つかのやり方があり、それぞれ得意/不得意があるので簡単にでも理解した上で使い分けるのがベター。
大きくはノイズを減らすのが得意なlow-pass filters(LPF)と輪郭をシャープにするhigh-pass filters(HPF)に分けられる。
代表的な種類としてはこんなものがある。
- 2D Convolution(2次元畳み込み)
- Averaging(平均)
- Gaussian Blurring(ガウシアンぼかし)
- Median Blurring(中央値ぼかし)
- Bilateral Filtering(バイラテラルフィルタ)
2D Convolution(2次元畳み込み)
import cv2 import numpy as np from matplotlib import pyplot as plt # 画像をそのまま読み込む img = cv2.imread('G-symbol.png') # すべての要素が浮動小数点1の5×5の行列を作成、平均を出すために25で割る # このカーネルさえ自作できれば、いろいろなフィルターが自作できる kernel = np.ones((5,5),np.float32)/25 # kernelをそのまま適用する。ビット深度はそのまま dst = cv2.filter2D(img,-1,kernel) # 横に1行で2つならべ、1つ目なので(1, 2, 1) # subplot(121)はsubplot(1, 2, 1)と同じ plt.subplot(121),plt.imshow(img),plt.title('Original') # x,y軸のメモリなし plt.xticks([]), plt.yticks([]) # 横に1行で2つならべ、2つ目なので(1, 2, 2) plt.subplot(122),plt.imshow(dst),plt.title('Averaging') # x,y軸のメモリなし plt.xticks([]), plt.yticks([]) # 画像表示 plt.show()
Averaging(平均)
import cv2 from matplotlib import pyplot as plt # 画像をそのまま読み込む img = cv2.imread('G-symbol.png') # 平均値ぼかし処理。今回の場合2Dフィルタと同じ処理になる。 blur = cv2.blur(img,(5,5)) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(blur),plt.title('Blurred') plt.xticks([]), plt.yticks([]) plt.show()
Gaussian Blurring(ガウシアンぼかし)
import cv2 from matplotlib import pyplot as plt img = cv2.imread('G-symbol.png') # ガウシアンぼかし(5, 5)は中心からの計算するピクセル範囲 # ガウシアンの場合は自動的に中心に近いほど近傍値としての重みが高くなり平滑化される blur = cv2.GaussianBlur(img,(5,5),0) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(blur),plt.title('Blurred') plt.xticks([]), plt.yticks([]) plt.show()
Median Blurring(中央値ぼかし)
import cv2 from matplotlib import pyplot as plt img = cv2.imread('ZebraWithAttachedShadow_noisy_Salt_and_Pepper.jpg') # 指定した範囲内でのピクセル数の平均値をとる。 # 白、黒などの極端なノイズは無視されるため、ノイズ除去に強い median = cv2.medianBlur(img,5) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(median),plt.title('Median') plt.xticks([]), plt.yticks([]) plt.show()
Bilateral Filtering(バイラテラルフィルタ)
import cv2 from matplotlib import pyplot as plt img = cv2.imread('woos4.jpg') # 入力画像、中心部からのピクセル範囲、カラーシグマ値、空間シグマ値 # カラーシグマが大きいとピクセル間での濃淡差が大きくないと効果がでない # 空間シグマが大きいと輪郭意外のボケがおおきくなるが計算処理に時間がかかる blur = cv2.bilateralFilter(img,9,75,75) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(blur),plt.title('Bilateral') plt.xticks([]), plt.yticks([]) plt.show()
今日の作業
スムージングの特徴をもう少し明確につかみたい。
2015年11月12日木曜日
OpenCV Tutorial(1)〜特定色のトラッキング
OpenCVのサイトにオンラインドキュメントでチュートリアルがあったので、ざっと眺めてためそうと思う。使う言語はCではなくpythonにしてみる。(慣れてるし)
Image Processing in OpenCVから。
青色でマスクされた部分が動画でトラッキングされながらグレースケールと青のみでマスクされて表示された。
Bloggerのデザイン微修正とOpenCVのチュートリアル見つけて1つのみ。残念。あと、ソースにコメントを付けて補足したい。
Image Processing in OpenCVから。
Changing Colorspaces
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # Take each frame _, frame = cap.read() # Convert BGR to HSV hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # define range of blue color in HSV lower_blue = np.array([110,50,50]) upper_blue = np.array([130,255,255]) # Threshold the HSV image to get only blue colors mask = cv2.inRange(hsv, lower_blue, upper_blue) # Bitwise-AND mask and original image res = cv2.bitwise_and(frame,frame, mask= mask) cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows()
青色でマスクされた部分が動画でトラッキングされながらグレースケールと青のみでマスクされて表示された。
今日の作業
Bloggerのデザイン微修正とOpenCVのチュートリアル見つけて1つのみ。残念。あと、ソースにコメントを付けて補足したい。
2015年11月11日水曜日
画像の特徴点を抽出する
せっかく入れたOpenCVなので何かやってみたい。
といってもパッと難しいことはできないので、よくある画像の特徴点抽出をやってみようかと思った。
出来た。
OpenCVのインストールが手強すぎて、あまり他のことに時間が割けなかった。とはいえ、OpenCV入れたので何ができるかの基本は押さえておきたい。明日は少し進展できたらいいな。
といってもパッと難しいことはできないので、よくある画像の特徴点抽出をやってみようかと思った。
import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('/usr/local/src/opencv-3.0.0/samples/data/lena.jpg',0) # Initiate STAR detector orb = cv2.ORB_create() # find the keypoints with ORB kp = orb.detect(img,None) # compute the descriptors with ORB kp, des = orb.compute(img, kp) # draw only keypoints location,not size and orientation img2 = cv2.drawKeypoints(img,kp, None,color=(0,255,0)) plt.imshow(img2),plt.show()
出来た。
今日の作業
OpenCVのインストールが手強すぎて、あまり他のことに時間が割けなかった。とはいえ、OpenCV入れたので何ができるかの基本は押さえておきたい。明日は少し進展できたらいいな。