發表文章

目前顯示的是 9月, 2017的文章

[ PySerial ] 檢查 Serial設備

因為工作需求,需要使用 USB傳輸 Serial data。 之前都是用 Arduino IDE檢查 Port的位置,一直感覺手段不是很漂亮。 最近在 StackOverflow上看到有人分享一段代碼,能夠自動尋找電腦上 Serial的設備。 由於簡單給力,所以我就原封不動的 PO了。 Successfully tested on Windows 8.1 x64, Windows 10 x64, Mac OS X 10.9.x / 10.10.x / 10.11.x and Ubuntu 14.04 / 14.10 / 15.04 / 15.10 with both Python 2 and Python 3. import sys import glob import serial def serial_ports(): """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty" ports = glob.glob('/dev/tty[A-Za-z]*') elif sys.platform.startswith('darwin'): po...

[ Scikit-image ] 利用 SSIM篩選相似度過高的圖像

圖片
之前有提到過利用 Hamming distance對兩張照片進行相似度的比對, " 利用PhotoHash篩選相似度過高的圖像 "。 最近發現另一個相似度的方法,這個方法叫做 SSIM(Structural Similarity Index),有興趣的可以 維基 一下。 好在 Scikit-image 裡已經提供它的算法,參數的部份可以參考 這裡 。 from skimage.measure import compare_ssim import numpy as np import cv2 import os import glob def filter(member): img_list = glob.glob('./{0}/*.png'.format(member)) img_list.sort(key=lambda num: int(num.split('/')[-1].split('.')[0])) for img in img_list: img_path = img next_img = cv2.imread(img_path,0) if 'img_target' in locals(): s = compare_ssim(img_target, next_img) if s >= 0.8: if not os.path.isdir("./{0}/similar".format(member)): os.system("mkdir ./{0}/similar".format(member)) print("make dir ./{0}/similar".format(member)) os.system("mv {0} ./{1}/similar".format(img_path, member)) ...

[ Tor ] 讓 Chrome透過 Tor連上網際網路

圖片
最近 WBSC在 YouTube上直播 U18的比賽,有效地消磨宅宅我 多餘的生命 空閒的時間,但只要是台灣的比賽通通限制 IP。 像我這種在外討生活,只靠網路過日子的宅宅,原則上是不會妥協的。 原本只打算用 VPN作跳板的,但免費的 VPN實在有夠不穩的。 打開 Tor Browser,浪費了我十分鐘多的生命在等待連線,仍然沒有連上。 只好拿出之前寫壞爬蟲安裝的 Tor。有興趣的話可以參考 " 使用 Tor更新 IP位置 ",裡面也稍微簡述了一下如何安裝 Tor。 首先打開 Chrome安裝 Proxy Helper 。 安裝完成後,右上角會出現一個像水晶球的 icon。 右鍵點擊 Proxy Helper,進入選項後,在 SOCKET PROXY的部分輸入 Tor預設的 Port " 127.0.0.1:9050 "。 接著打開 Terminal執行 Tor。 $ tor 左鍵點擊 Proxy Helper,選擇 SOCKET PROXY,Chrome就可以透過 TOR連上網際網路了。 想要直接連上網際網路時,就選擇 SYSTEM。 相較 Tor Browser連上網際網路的速度比較快,也比較節省記憶體。(個人感覺) 覺得連線速度不滿意或是 Google覺得異常時,可以開啟另一個 Terminal輸入下列指令更換 IP。 $ killall -HUP tor

[ OpenCV ] 利用 Opencv訓練 Haar級聯數據

圖片
本篇純為筆記,先寫下來擔心自己忘了,同時希望也能幫助到一些朋友。 可能有很多地方有錯,歡迎糾正。 開始前請先確認自己安裝了 Opencv,作者是在 Python2環境下使用 opencv-2.4.9,但我在 Python2環境中用 opencv-3.1.0也可以正常訓練。 接著 clone訓練用的代碼 git clone https://github.com/mrnugget/opencv-haar-classifier-training 資料夾結構如下 . opencv-haar-classifier-training ├── LICENSE ├── README.md ├── bin │   └── createsamples.pl ├── classifier ├── negative_images ├── positive_images ├── samples ├── tools │   └── mergevec.py └── trained_classifiers └── banana_classifier.xml 把正樣本放到 positive_images資料夾中,負樣本放到 negative_images資料夾中。 正樣本的圖像要將要 detect的目標物剪裁成只有目標物的大小。 圖像的比例沒有硬性要求,但不要差太多。     工作上的圖片不方便放到這,所以就直接放上 Tutorial裡的照片。 而負樣本就我所知,什麼照片都可以,就是不要放圖中有目標物的照片。(聽說負樣本越多越好) 接著輸入以下指令,將 positive_images和 negative_images裡的一些資訊打包成 txt檔。 find ./positive_images -iname "*.jpg" > positives.txt find ./negative_images -iname "*.jpg" > negatives.txt 接著輸入下列指令,將正樣本打包成 *.vec的文件,文件將會儲存在 samples資料夾中。 perl bin/createsamples.pl positives.txt negatives.txt samples 1500\ ...