読者です 読者をやめる 読者になる 読者になる

<function xxx at 00000xxxxx> のエラーが出た。

<function ERROR at 0x0000000XXXX>

僕の時は↑のエラーがでました。

 

 

日本語を表示させるときは、外部ファイルから日本語の定数を読み込んだ方が良いと言われて、使っていたのですが、

たまにこのエラーがでるので、何でだろうと思ったら、その外部ファイルのなかに同じ名前の関数が使われていたせいだったようです。(  ̄▽ ̄)

 

続きを読む

PEP8でつまずいた警告メモ

pythonにはPEP8とかいうコーディング規約があるそうです。

つい最近初めて知りました。

いやー本当に毎日がべんつよですね。

 

 

 

続きを読む

svmでサイコパスシステム作ってみたかったけど出来なかった話

これは結局うまく行かなかったもののただのメモ書きですのであしからず。

なんの参考にもならないよ!

でも、もし賢い方でしたら僕に教えてください!!

 

背景の背景

LibSVM - 音声メモ

↑これがわかりやすかったので、使ってみようかなって思ったのが始まりです。

 

背景

 

犯罪者のツイッターアカウントとか結構残ってますよね。

 

最近だとアイドルを刺しまくった事件とか、ちょっと前だと浦安での通り魔とかの人のツイッターアカウントが話題になっていたと思うのです。

そういう人のつぶやきって、頻出単語も全然違うけどちょっと似てるところを感じたのが作ろうと思ったきっかけです。

 

それらのつぶやきデータを使って機械学習とかしてこのアカウントのは危ない人かどうか判定をできるようにしてみたかったのです。

とりあえず、犯罪者のつぶやきに似ている人は危ない人ということです。

 

続きを読む

外枠の矩形を消す

矩形の中に矩形があれば白で塗りつぶして消すということをしたかったのです。 

 

f:id:alakialaca:20170123012339p:plain→ f:id:alakialaca:20170123012342p:plain

こういうことです。

ほとんど↓と同じです。

alakialaca.hatenablog.com

 

続きを読む

見つけた四角形を新しい画像に書く

 画像中から四角を見つけ、四角形を新しい画像に書くことをしたかったのです。

f:id:alakialaca:20170123012229p:plain →f:id:alakialaca:20170123012247p:plain

こういうことです。

 

 

#!/usr/bin/python
# -*- coding:utf-8 -*-

#import tesseract
import os,sys,re,cv,cv2
import numpy as np


imgFile = sys.argv[1]
argc = len(imgFile)
colorImage = cv2.imread(imgFile)

(hi, wi, di) = colorImage.shape
size = hi*wi
im_gray = cv2.cvtColor(colorImage,cv2.COLOR_BGR2GRAY)

kernel = np.ones((2,2),np.uint8)
debuImage = cv2.erode(im_gray,kernel,iterations = 1)

minArea = 200
ret,thresh = cv2.threshold(debuImage, 127, 255, 0)

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_TC89_L1)

out_square = 0

real_square = []
for cnt in contours:
    cnt_len = cv2.arcLength(cnt, True)#領域を囲む周囲長を調べるtrueが輪郭が閉じているを示す
    cnt = cv2.approxPolyDP(cnt, 0.03*cnt_len, True)
    if len(cnt) != 4 or cv2.contourArea(cnt) < minArea or not cv2.isContourConvex(cnt): continue
    for cnt_x in range(cnt[0][0][0]-3,cnt[0][0][0]+3,1):
        if cnt_x == cnt[3][0][0]:
            for cnt_y in range(cnt[0][0][1]-3,cnt[0][0][1]+3,1):
                if cnt_y == cnt[1][0][1]:
                    for cnt_x2 in range(cnt[2][0][0]-3,cnt[2][0][0]+3,1):
                        if cnt_x2 == cnt[1][0][0]:
                            for cnt_y2 in range(cnt[2][0][1]-3,cnt[2][0][1]+3,1):
                                if cnt_y2 == cnt[3][0][1]:
                                    real_square.append(cnt)


new_img = np.zeros((hi, wi, di), np.uint8)
new_img[:] = [255, 255, 255]

cv2.drawContours(new_img, real_square, -1, (0, 0, 255), 2)
cv2.imshow("aka",new_img)
cv2.waitKey()

 

 

続きを読む

macでopencv使おうとした時に手こずったメモ

 

MacにOpenCVをインストールする方法 - Qiita

まず↑の「mac opencv」で一番上に出てくるページをやってみたのですが、

 

f:id:alakialaca:20170101004624p:plain

brew install opencvの段階で↑のエラーが出てだめでした。
続きを読む

pythonで再現性をもたせるためシードを揃えて行をシャッフル

シェルスクリプトでシードも揃えたままシャッフルできたら楽だったのですけど、ちょっとわからなかったのでパイソンで、リストをシードを揃えてシャッフルしてその順番に並べるってコード。

 

#!/usr/bin/python
# -*- encoding: utf-8 -*-

import numpy as np
import sys
pit = 1 # シードここの値を変える


argvs = sys.argv
argc = len(argvs)
if(argc != 2):
    quit()
argvs[1]

def shuf(fn):
    fp = open(fn,"r")
    fw = open(fn.replace('scale','scale.shuf'),"w")
    inline = fp.readlines()#一行ずつ読み込む
    las_arr = np.array(range(len(inline)))#行数分リストを作る
    len_inline = len(inline)
    np.random.seed(pit)
    np.random.shuffle(las_arr)#リストをシャッフル
    for i in range(0,len_inline):
        for j in range(0,len_inline):
            if las_arr[i] == j:#リストの順番と揃ったら
                fw.write(inline[j-1])
file_name = "filename"+"argvs[1]+".scale"#ファイル名
shuf(file_name)