PIXNET Logo登入

No More Codes

跳到主文

歡迎光臨ghostyguo在痞客邦的小天地

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 5月 23 週日 202117:12
  • [Python] 從中央氣象局下載地震活動彙整列表

去年氣象局網頁改版為響應式網頁後, 這篇爬蟲已經過期, 一直沒時間更新, 這次使用 python + selenium + beautifulsoup, 使用 webdriver之chromedriver, 讓chrome選擇UI設定後, 從網頁內容爬取資料. 程式先將每個月的彙整表拉出來, 因為新版彙整表資訊不完整, 缺少經緯度等資料, 所以須開啟每一個地震的詳細資料頁, 重新爬一次

(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(351)

  • 個人分類:Python
▲top
  • 3月 12 週五 202121:37
  • [Python] 關於youtube-dl

最近想要下載整批的youtube影片, 有些是教學系列, 有些是電影戲劇, 用了一些工具程式, 總有些不太方便, 有的似乎因為youtube網頁有多種形式, 也不是每種都能使用, 研究了一些 youtube-dl 的使用方法, 配合python, 然後寫了一個暴力抽取 url 的函數, 用來抽取 youtube 網頁的影片來源, 雖然可能重複抽取, 不過因為 youtube-dl 會自動判斷是否已經下載, 所以也還算可以用. 完整程式在這裡, 有幾種功能:
單一檔案下載: 呼叫 download_video(download_url, destFileFolder), 給影片來源 download_url 及儲存目錄 destFileFolde , 例如 main() 裡面的這行:
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(118)

  • 個人分類:Python
▲top
  • 6月 28 週日 202016:01
  • [tensorflow] 在v2下使用v1

tenserflow 2版之後有許多功能已經跟 v1不相容, 幸好 v2 包含了 v1 的方法, 只是改了類別名稱, 如果原有 v1 的程式碼想要在 v2 環境使用, 只要照以下 import 方式就可以繼續使用原 v1 程式碼:
 
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(26)

  • 個人分類:Python
▲top
  • 4月 13 週一 202016:16
  • [python] 咖啡豆去背

undefined
咖啡豆辨識, 先設計打光場景, 背景用單色, 先用HSV色彩過濾得到一個初步遮罩, 再用 morphology處理遮罩, 把遮罩內的洞補起來, 並且縮小邊緣, 以獲得完全不含背景色的圖片



import cv2

import numpy as np

 

pic = 'pic/b2.jpg'

img=cv2.imread(pic,cv2.IMREAD_COLOR)

 

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_coffee = np.array([0,0,0])

upper_coffee = np.array([60,255,180])

 

mask = cv2.inRange(hsv, lower_coffee, upper_coffee)

kernel1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(13,13))

kernel2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(15,15))

   

#mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

mask = cv2.dilate(mask ,kernel1)

mask = cv2.erode(mask, kernel2)

 

out = cv2.bitwise_and(img, img, mask= mask)

 

cv2.imshow("img",img)

cv2.imshow('mask',mask)

cv2.imshow("out",out)

 

cv2.waitKey(0)

cv2.destroyAllWindows()



(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(381)

  • 個人分類:Python
▲top
  • 3月 10 週二 202022:09
  • [Python] google map API

undefined
最近熱門的藥局領口罩, 有公開的CSV可以下載, 用python簡單就可抓取了, 觀察了一下資料,更新速度還蠻快的, 但是有住址而無GPS座標, 如果要用地圖, 需要一個轉換, 一次轉換那麼多點要花很多錢, 最好是用cache的方式, 有抓到就先存起來, 要查詢時先去cache找, 沒有再去查詢.

(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(791)

  • 個人分類:Python
▲top
  • 12月 12 週三 201813:45
  • [AI] keras-yolo3 連接 ipcam 進行物件辨識

undefined
接續前一篇 [AI] keras-yolo3 測試 這篇說明如何連接具有 onvif 協定之 ipcam.
要連接 ipcam 首先要找到連接的 uri,如果手冊沒有,可以先下載 ONVIF Device Manager,先用瀏覽器登入 ipcam 後找到 port 設定,然後手動方式將 ipcam 網址加入 ONVIF Device Manager 的裝置列表,輸入帳號密碼,然後手動連線,點選中間欄位的 Live Video, 影像串流就會顯示在右方窗格,下方即可看到 uri, 例如:
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(914)

  • 個人分類:Python
▲top
  • 12月 09 週日 201822:26
  • [AI] keras-yolo3 測試

undefined
YOLO (You Only Look Once) 是關於物件偵測的類神經網路演算法,作者 Joseph Redmon 以 darknet 架構實作,輕量、依賴少、演算法高效率,在工業應用領域很有價值,例如行人偵測、工業影像偵測等等。官網寫的非常詳盡,照著操作便能完成 Yolo 初步的 detection 和 training,但這裡只測試另一款使用 keras 架構實作的 keras-yolo3 的操作步驟。
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(909)

  • 個人分類:Python
▲top
  • 11月 07 週三 201822:40
  • [Python] 以tensorflow分析Mw的雙高斯混合模型

undefined
根據中央極限定理: 大量相互獨立隨機變數的均值經適當標準後為常態分佈。RMT不論有無發生地震均會不斷一直計算, 以目前觀察到的Mw為例, 平時多在3.5以下, 當遠方地震傳來時, 經驗上常看到Mw>4的現象. 假設每次解出的Mw是一個隨機變數Xi, 那麼:
X=X1+X2+X3+....
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(223)

  • 個人分類:Python
▲top
  • 10月 15 週一 201816:25
  • [Python] 從中央氣象局下載地震活動彙整列表

這篇已經過期失效, 新版的在這裡

氣象局網站的 地震活動彙整 列表, 檢視網頁內容, 真正資料網頁連結為 https://scweb.cwb.gov.tw/Page.aspx/?ItemId=20&loc=tw&adv=1, 因為是ASP網頁, 所以需先取出ASP的傳遞參數, 資料表格之 class 為 datalist4, 使用 BeautifulSoup 即可取出表格內容
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(118)

  • 個人分類:Python
▲top
  • 10月 07 週日 201817:45
  • [Python] 從USGS下載地震資料

為了分析地震地點的地理名稱, 使用Python語言, 從USGS下載地震資料存成文字檔. 因 USGS 使用逗點作為分隔, 因此這裡使用 $ 錢號來做輸出資料區隔, 以避免資料混淆, 亦可匯入 excel 進行整理. 輸出資料有兩個欄位, 第一個是原始地震資料來源, 第二個是擷取的地點名稱, 打算做連續地點關聯性分析, 以及加上自動翻譯為中文, 作為資料與動畫分析時自動匯入使用


# -*- coding: utf-8 -*-


"""


Created on Sun Oct  7 11:53:25 2018


@author: ghosty


@Program: usus_location_list.py


@Prupose: download USGS data and analyze the quake location name for


          (1) location relation analysis


          (2) translation from English to Traditional Chinese, used for AI analysis tool development


"""


 


import csv


import requests


import os.path


import datetime


#import dateutil


from dateutil.relativedelta import relativedelta


 


#init global variables


locFileName = 'usgs_loc.txt'


locationList=[]


quakeList=[]


#


  


def downloadUSGS(starttime, endtime, minmagnitude, maxmagnitude):  #,latitude=121.1,longitude=23.5,maxradiuskm=20000):


    url = 'http://earthquake.usgs.gov/fdsnws/event/1/query'


 


    query = {


            'format': 'csv',


            'starttime': starttime,


            'endtime': endtime,


            'minmagnitude': '5',


            'eventtype':'earthquake'


            }


 


    response = requests.get(url, params=query)


    if  response.status_code != requests.codes.ok:


        print("USGS requesr fail")


        return


    #print("encoding: %s" % response.encoding)


    quakeList = list(csv.reader(response.text.split('\n'), delimiter=','))


    header=quakeList[0]


    #time,latitude,longitude,depth,mag,magType,nst,gap,dmin,rms,net,id,updated,place,type,horizontalError,depthError,magError,magNst,status,locationSource,magSource


    quakeList.pop(0) #remove header line


    print('USGS download #',len(quakeList))


    return quakeList, header


 


 


def addLocation(quakeData):


    for quake in quakeData:


        #print('quake:',quake)


        if (len(quake)==0): #skip null record


            continue


        quakeTime = quake[0]


        quakeLatitude = quake[1]


        quakeLongitude = quake[2]


        quakeDepth = quake[3]


        quakeMag = quake[4]


        quakeMagType = quake[5]


        quakePlace = quake[13]


        #print(quakeTime, quakeLatitude, quakeLongitude, quakeDepth, quakeMag, quakeMagType, quakePlace)


        locs = quakePlace.split(',')


        #print(locs) #debug for 2013-02-01


        for loc in locs:


            try:


                ofPos = loc.find(" of ")    #do not usr 'of' only to prevent error


                if (ofPos>0):


                    loc=loc[ofPos+4:]


                #loc.replace("the ","")


                loc.replace("the ","")


                #loc.strip() #remove space, strip() fail to use


                while (loc[0]==' '):


                      loc=loc[1:]


                if (loc not in locationList):


                    quake = '{0} {1} {2} {3} {4} {5} {6}'.format(quakeTime, quakeLatitude, quakeLongitude, quakeDepth, quakeMag, quakeMagType, quakePlace)


                    print("Add [",loc, '] from [',quake,']')


                    quakeList.append(quake)


                    locationList.append(loc) 


                    #print(len(quakeList),len(locationList))


            except:


                #source data error


                print('parse fail: ',quakeTime, quakeLatitude, quakeLongitude, quakeDepth, quakeMag, quakeMagType, quakePlace)


               


def saveLocation(locationList, locFileName):


    #print(len(locationList))   


    print("export ",len(locationList)," locations")


    with open(locFileName, 'w') as locfile:


        for i in range(len(locationList)):


            locfile.write('\"'+str(quakeList[i]) + '\"$\"' + str(locationList[i]) + '\"\n') 


 


def loadLocation(locationList, locFileName):


    if (os.path.exists(locFileName)):


        with open (locFileName, 'r') as locfile:


           for line in locfile:


               quakeData = line.strip().split('$')


               quakeList.append(quakeData[0].strip('\"'))


               locationList.append(quakeData[1].strip('\"'))


        print("import ",len(locationList)," locations")


       


#------main()--------


# Load processed location data


loadLocation(locationList, locFileName) 


#for all date


dt1 = datetime.date(1900, 1, 1)


#end_dt =  datetime.date(2000, 1, 31)


end_dt =  datetime.date.today()


while (dt1<end_dt): # in daterange(start_dt, end_dt):


    """


    # if there are too many records at one download, reduce the download period


    if (dt1 < datetime.date(2018, 1, 1)):


        delta_dt = relativedelta(years=1)


    else:


        delta_dt = relativedelta(months=1)


    """


    delta_dt = relativedelta(years=1)


    dt2 = dt1 + delta_dt


    print("\nProcessing...",dt1.strftime("%Y-%m-%d"),"~",dt2.strftime("%Y-%m-%d"))


    quakeDATA, header = downloadUSGS(dt1, dt2, 4.0, 10)


    addLocation(quakeDATA) 


    dt1 = dt2         


 


#save processed result


saveLocation(locationList, locFileName)




(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(113)

  • 個人分類:Python
▲top
12»

文章分類

toggle 雜項記錄 (3)
  • Synology (6)
  • RouterOS (2)
  • Windows (1)
toggle 硬體設計 (1)
  • Verilog (2)
toggle 訊號處理 (4)
  • RMT觀察 (106)
  • P-alert觀察 (12)
  • 地震訊號 (16)
  • 科普知識 (1)
toggle Raspberry Pi (1)
  • 安裝設定 (7)
toggle 程式設計 (16)
  • C/C++ (1)
  • LinkIt (1)
  • Android (1)
  • JavaScript (1)
  • CUDA (16)
  • STM (1)
  • ESP32 (9)
  • OpenCV (1)
  • PLC (6)
  • 網頁 (1)
  • C# (5)
  • Java (1)
  • 機器人 (3)
  • Python (15)
  • ESP8266 (3)
  • Golang (1)
  • 未分類文章 (1)

熱門文章

  • (10,219)NodeMCU (ESP8266) 韌體更新
  • (2,189)在 C# 呼叫 CUDA 的方法
  • (1,832)ESP32 使用 I2C LCD
  • (1,429)[CUDA] SDK安裝、範例編譯與 HelloCuda 程式
  • (1,232)使用 NodeMCU API
  • (791)[CUDA] 平行處理基礎 : Block 與 Thread
  • (382)MR與實際地震的關係
  • (189)2018.07.07 P-alert網頁分析 (爬蟲準備)
  • (106)從4/11蘭嶼地震探討RMT作為地震前兆的可能性
  • (83)開始抓 P-alert 資料

最新留言

  • [22/04/04] 訪客 於文章「[CUDA] OpenCV CUDA 程...」留言:
    回饋您這方面資訊,我是從 PTT搜尋引擎的排名,看...
  • [21/12/13] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    了解,但我之後改成電腦的IP address,還是無法連上並...
  • [21/12/12] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    因為我填入127.0.0.1卻連不上mqtt...
  • [21/12/12] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    請教一下,如果我是在同一台電腦上架設mqtt伺服器,那我co...
  • [20/08/21] 蔡宇弦 於文章「[Verilog] DHT22...」留言:
    請問有seg7的程式嗎?...
  • [20/07/09] ghostyguo 於文章「設定Windows排程器執行powers...」留言:
    是的, 每天壓縮原始圖檔, 複製到NAS後同步到雲端硬碟...
  • [20/07/08] Meteor Shih 於文章「設定Windows排程器執行powers...」留言:
    老師 這是用在RMT圖檔 排程自動壓縮的用途上嗎?...
  • [18/10/30] allen 於文章「[ESP32] arduino環境下的A...」留言:
    謝謝老師,難怪我PIN 2 都不通.... ...
  • [18/09/09] ghostyguo 於文章「[python] 下載台灣股市的每日成交...」留言:
    2018/09/09 更新在這裡: http://ghos...
  • [18/09/09] ghostyguo 於文章「[python] 抓取台灣上市櫃公司股票...」留言:
    2018.09.09 更新: http://ghostyg...

參觀人氣

  • 本日人氣:
  • 累積人氣:

文章搜尋

最新文章

  • [Mikortik] 封鎖一大堆blacklist
  • 樹莓派安裝執行 .NET Core 程式
  • [Rpi3] 3.5吋觸控LCD驅動
  • ESP-IDF 使用 ESP32-S2 的設定/編譯/燒錄
  • Raspberry apt source 更新
  • 簡易DDNS 轉址服務
  • 2022/03/23 東部地震現象記錄
  • [Python] 計算RMT檔案目錄下的檔案數
  • [HTML] bootstrap5 與 chart.js (v3)
  • [PHP] 掃描子目錄, 自動建立連結標籤