2019年4月20日土曜日

vi エディタ

viについて

特徴としては、いかが




モードについて
ビジュアルモード

[v][V][Ctrl-v]
文字単位、行単位、矩形

矩形をうまく利用して、ある領域を削除することができます。
選択後は
貼り付けたい場合は、
p(ペースト)

削除したい場合は、
x(削除)
を入力してください

例題とし
いらない行の削除です、こんな感じでできます

いらない領域(矩形)の削除です




コマンド一覧

gg
G

i

dd
行を削除したいときは、このコマンドがお勧め。
数行削除したい場合は、「d」を押し続ければ行がきえていきますよ


マクロについて


・マクロの記録

qa マクロ内容 q

・マクロの使い方は、
 @a
 3@a


登録マクロの確認方法
:reg

・マクロの削除
qa q

*再起動しても登録されています



便利な使い方

定型的なコメントなどを素早く

ヤンクで書き出し
マクロで書きだした文字列を挿入します


・行番号を表示してみます


便利な使い方(複数ファイル)
vim -p test.c test2.c
vim -p *.c
*タブの移動は、gt,gTキーです。


vim -o test.c test2.c
vim -O test.c test2.c
小文字、大文字のoで水平、垂直に分割することができますよ
*ファイル切り替えは、Ctrl + wキーを2回押してください

ここでデモです。
ファイル内容が違いを見つけて、修正する事





ここからは、以前に書いた内容をペーストしました。

プログラミング viの使い方


昨日youtubeに投稿したのですが、

最近は、みなさん頑張っていますね、かなり自分は劣等感でいっぱいです。


でも、せっかくviに関してまとめたのでこちらにそのマトメを書いておきます。


*マウスによるGUIのエディターと違う
*カーソル移動のやり方
*編集
*ファイル操作



最低限憶えておきたい事
・モードが2種類あります
 >コマンドモード
 >入力モード


 ※入力モードを終わりにするには、
  Escキー


・カーソルの移動は、矢印キー
(上、下、右、左)

・編集
 文字列の追加 a
 文字列の変更  R
 文字の削除    x


 行の追加 o
 行の削除 dd

・ファイル操作
 書き出す :wq
 破棄する :q!





もっと便利に

・編集の取り消し
編集操作の取り消し u
編集操作の取り消しの取り消し Ctrl+r

文字列の検索
/hoge  hogeの文字列を検索
n    次のhoge
N              前のhoge


・行のコピー
1行コピー yy
n行コピー n数字yy
ペースト p

練習問題
1.include ファイルを追加します
2.関数の複製を作成する(関数名を既存関数2にする)
3.行のコピー、カット、ペースト


2019年4月19日金曜日

めげない pythonで動画を表示

HPのアクセスが少ないので、めげてしまう。

でも、めげたときは
・まー何とかなるさと楽天的に
・他の良いことをクローズアップして自信を回復
・最後に、これを機会にを多角的に考える

どうかな~

◆パイソンで、ウインドウズ画面をキャプチャするものを作成しました。
ついでに再生もつくりました。



pythonで動画を表示します。
使い方 
play.py  動画ファイル

※cv2,npを使いますので、インストールしてください
 cv2.waitKey(20)で再生スピードを調整


play.py
#-*- coding:utf-8 -*-
import cv2
import numpy as np
import sys

width  = 1280
height =  720
fname  = sys.argv[1]
#fname  = "capture5.mov"

def main():

    # 動画の読み込み
    cap = cv2.VideoCapture( fname)

    # 動画終了まで繰り返し
    while(cap.isOpened()):

        # フレームを取得
        ret, frame = cap.read()
        if ret != True:
            break

        #frame = cv2.resize(frame, dsize=(width/2, height/2))
        # フレームを表示
        cv2.imshow("Flame", frame)
        cv2.waitKey(20)

        # qキーが押されたら途中終了
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        
    cap.release()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()











pythonでPC上の画面をキャプチャします。
ウインドウズ版になります。
かなり、ソースが汚いですがごめんなさい。

使い方 
capture.py  動画ファイル名( cap.mov等)

※何かキー入力で終了です

※importしているファイルは、インストールされていなければ
してください。



capture.py
# -*- coding: utf-8 -*-

import sys
import win32gui
import win32ui
import win32con
from PIL import Image

import cv2
import numpy as np



SCREEN_WIDTH = 2160
SCREEN_HEIGHT = 1440
SCREEN_SCALING_FACTOR = 1.5

""" スクリーンショット撮ってそれを(Pillow.Imageで)返す """
window = win32gui.GetDesktopWindow()
window_dc = win32ui.CreateDCFromHandle(win32gui.GetWindowDC(window))
compatible_dc = window_dc.CreateCompatibleDC()


width  = 1280
height =  720
sx = 10
sy = 10

# Define the codec and create VideoWriter object
#fourcc = cv2.VideoWriter_fourcc(*'XVID')


#fourcc = cv2.cv.CV_FOURCC(*'XVID')
fourcc = cv2.cv.CV_FOURCC(*"H264")
#out = cv2.VideoWriter('video.avi', fourcc, 20.0, (width, height))
#out = cv2.VideoWriter('output123.mp4',0x00000021,15.0,(1280,360))
#out = cv2.VideoWriter('output.avi',fourcc, 20.0, (width,height))
fname = sys.argv[1]
#fname = "cap6.mov"
out = cv2.VideoWriter( fname, cv2.cv.CV_FOURCC(*'mp4v'),25, (width, height))
#out = cv2.VideoWriter('capture123.mp4', cv2.cv.CV_FOURCC(*'mp4v'),30, (width, height))

bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(window_dc, width, height)
compatible_dc.SelectObject(bmp)


def screenshot():

    compatible_dc.BitBlt((0, 0), (width, height), window_dc, (sx, sy), win32con.SRCCOPY)

    curFlags, curH, (curX, curY) = win32gui.GetCursorInfo()
    compatible_dc.DrawIcon((curX, curY), curH)
    
    img = Image.frombuffer('RGB', (width, height), bmp.GetBitmapBits(True), 'raw', 'BGRX', 0, 1)
    return img





#img.show()

def main():

    while(1):
        #im = ImageGrab.grab((90, 90, 800, 400)) # デスクトップの始点(0,0),横400, 縦300の矩形部分をキャプチャ
        im =screenshot()
        im = np.asarray(im)                     # OpenCVで扱うためにNumpy配列に変換
        im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # BGR→RGB
        out.write(im)

        im2 = cv2.resize(im, dsize=(width/2, height/2))
        cv2.imshow("desktop", im2)               # 画面表示
        # write the flipped frame

        if cv2.waitKey(1) > 0:                  # キー入力があれば終了
            out.write(im)
            cv2.destroyAllWindows()
            break

if __name__ == "__main__":
    main()