發表文章

OpenCV-Python on Windows with Anaconda 3

圖片
OpenCV is a open source computer vision library for real-time applications. It supports many programming languages such as C++, C, Python and Java. In this tutorial, OpenCV is installed with Anaconda 3 running on Windows 10. OK, let's get started. OpenCV 是一套開發電腦視覺即時處理的函式庫,支援多種程式語言,例如C++、C、Python、Java,本文會在Windows 10上安裝OpenCV與Anaconda 3,我們開始吧! 1. Anaconda 3 安裝 (Anaconda 3 Installation) Go to https://www.anaconda.com/download/ and download Anaconda 3. Then install it with default settings. 至  https://www.anaconda.com/download/  下載 Anaconda 3,使用預設設定來安裝。 2. 使用 Anaconda Prompt (Using Anaconda Prompt) Open the Anaconda Prompt in Anaconda 3 application folder. And test it with the command: 開啟應用程式Anaconda中的Prompt,輸入下面指令: 1 conda --version The conda version will display on the prompt windows: conda的版本資訊會顯示在 prompt 視窗中: 3. 建立Python環境 (Create an Python Environment) Enter the following commands in the prompt windows: 在prompt視窗中輸入下面指令: ...

OpenCV-Python in Windows 在Windows上使用OpenCV-Python

圖片
筆者嘗試在自己的筆電上裝OpenCV-Python,參考的文章為: Install OpenCV-Python in Windows 。需要下載三個軟體套件: Python-2.7.x .  Numpy .  Matplotlib ( 選擇性的套件,建議安裝,因為OpenCV的教學文章常用到 ) 使用預設選項安裝此三個套件,而Python會安裝在 C:\Python27\ 安裝完後請開啟 Python IDLE,輸入 import numpy檢查Numpy是否可正常使用。 從  sourceforge site 下載最新版的 OpenCV,並解壓縮。 將 opencv/build/python/2.7/x86/ 的 cv2.pyd 複製到  C:/Python27/lib/site-packages , 請開啟 Python IDLE,輸入 import cv2 與 print( cv2.__version__ ) 指令,若有輸出 OpenCV 的版本,就是安裝成功了。 接下來就可以使用 OpenCV 與 Python 來做 Computer Vision 相關的應用了。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

程式設計師需要知道的圖形使用者介面(GUI)觀念 ( Basic GUI Concepts for a Programmer )

圖片
早期的電腦( DOS 時代)都是文字介面,也就沒什麼講究畫面的設計方式,約莫五六年前吧,UI設計已經成為一個產品重要的因素之一,最經典的例子就是 iPhone 手機的硬體介面。想了解什麼是UI可參考此文: 什麼是 UI/使用者介面 。本文會以程式設計師的角度來談談所需要知道的觀念: 什麼是圖形使用者介面(Graphical User Interface)。 事件處理(Event Handling)。 MVC模式(Model–view–controller)。 手機GUI程式和電腦GUI程式有什麼不同。 什麼是圖形使用者介面(Graphical User Interface) 簡單來說就是 使用者與電腦互動的圖形畫面 ,例如Linux上的Unity、GNOME、KDE、Android手機畫面、iPhone手機畫面等。請參考由  https://en.wikipedia.org/wiki/Graphical_user_interface 所節錄的畫面: GNOME Shell ( Gnome‑3 )   KDE Plasma 5   Unity   Xfce   Enlightenment   Sugar   A  twm   X Window System environment   Windows on a  Wayland compositor   The  dwm   tiling window manager   Cinnamon 事件處理(Event Handling) 看過GUI的畫面之後,程式設計師應該會想知道如何寫一個GUI程式吧!那就需要了解GUI程式中是如何處理使用者按下滑鼠左鍵、用鍵盤打字等訊息。這部分的觀念清楚後,要學GUI程式設計就不會那麼難了。首先可以玩玩 Code.org 上的 製作一個Flappy遊戲 來認識什麼是事件。 再來看一下鍵盤...

網路程式開發者所需要的網路知識 ( Concepts for a network programmer )

圖片
身為一個網路程式開發者所需要的網路知識可能如下: 網路工具的使用。 網域名稱與主機位址。 通訊協定。 網路封包。 網路工具的使用 在Linux Ubuntu上可利用下面指令來安裝網路工具: sudo apt - get install netcat - openbsd tcpdump traceroute mtr 請在Linux下試試底下的指令: ip addr show eth0 ip route show ping - c3 8 . 8 . 8 . 8 ip route show default netstat - nr host - t aaaa google.com host - t mx tw.yahoo tcpdump - n - c5 - i eth0 port 22 traceroute tw.yahoo.com mtr tw.yahoo.com printf 'HEAD / HTTP / 1 . 1 \ r \ nHost : tw.yahoo.com \ r \ n \ r \ n' | nc tw.yahoo.com 80 在Windows系統下,有 netstat 與 ping 指令可以用來檢查電腦的網路狀態。此外若需要分析封包時,可用 Wireshark 這套軟體來協助。 檢測電腦 IPv6 的功能網頁: http://test-ipv6.com/ 網域名稱與主機位址。 網域名稱(Domain Name) 是用來辨識網路上某一台電腦,以Google為例, www.google.com 剛好是Google的網域名稱與搜尋引擎網址的名稱,每一個網域名稱通常會有至少一組的 IP位址(住址),這可用 ping 的指令來查詢到,而 www.google.com 所對應的IP可能為108.177.97.106。 【那這IP是從何而來的?】透過網路上的 Domain Name System所存放的網域名稱與IP對應表,一個網域名稱所對應的IP就可被查詢到了。 另外,現存的主機位址有 32 bits 的 IPv4 與 128 bits 的 IPv6 。此外也需要分清楚 私有網路 與公開網路以及實體IP、虛擬IP、固定IP、子網路( Subnetwork ...

如何學好物件導向程式設計

圖片
本文為延續 如何學好程式語言 一文,要來說明學習物件導向程式設計需要的學習目標有哪些: 物件(Objects) 類別(Classes) 繼承(Inheritance) 多型(Polymorphism) 封裝(Encapsulation) 物件(Objects) 所有的東西都是物件。(Everything is an object.) 這句話是什麼意思呢?舉凡看的到、摸的到、看不到、摸不到、聞的到的東西等,只要說得出名稱的都可以稱為物件, 所以「看到鬼了!」這句話中的「鬼」是個無形的物件 ( 嗎? )。鉛筆、原子筆等就是 有形的物件 。在程式碼中的變數名稱就是程式語言中的物件,例如下面程式碼: int grade; String studentName; grade 可能是用來表示「成績」這個物件。 studentName可能是用來表示「學生姓名」這個物件。 在程式碼中物件的宣告(定義)方式如下, Object objName; Object是物件的型態,有可能為基本型別:int, float, char, ...etc,或是類別(Class)型別。談到類別的話,就請往類別一小節閱讀。 每個物件都有行為與特徵,例如人這個物件會跑、說、走、跳等行為,人有身高、體重、膚色等特徵,行為在程式語言裡常用成員函式(Member functions)來實現,而特徵常用類別的成員資料(Member data)來表示。 類別(Classes) 因為程式語言內建的基本型別只能記錄少許的資訊,例如int型別就只能記錄整數部分,於是在C語言中有 strcut 的出現,可用來記錄不同型別的資訊例如: struct Computer { int product_id ; char * cpuType ; int * ram ; float price ; }; 上述例子Computer紀錄了四筆資料,但這樣還不能描述物件的 行為 。於是電腦科學的專家們想出classes這個觀念出來,用類別來表示物件的藍圖(積木),於是【 將現實生活中的物件變成程式語言中的軟體物件 】這一過程叫做 資料抽象化 。物件與類別的圖文說明可參考此文: Objects and Classes in Java 。 ...

如何學好程式語言

本文不提如何 自學程式設計 ,而是說明「決定要學程式語言時,要如何 學好 它」,大致上有下面幾點需要學習的: 如何使用變數。 如何運用陣列。 如何運用判斷敘述。 如何運用重複結構。 如何定義函式。 如何使用函式庫 libraries 。 如何除錯 debug。 以上幾點若能熟練的話,對於小程式來說是足夠的。底下會根據各點分別說明。 如何使用變數 此部分包含需要知道變數的型態,以及這個變數可以用來做什麼,例如此行程式碼  int sum; 是代表用來做整數的加總嗎?這可不一定,那下面一行程式碼的變數應該就是用來做整數的加總了吧!  int sumOfIntegers; 或許是吧!以上兩例的變數是為了要說明 變數命名 的重要性,變數命名就好像在取人名一樣,取的好,看程式碼的人就容易了解,也有助於 程式碼的可讀性 。此外, 變數範圍(Variable Scope) 也需要了解。 如何運用陣列 陣列 英文為Array,為 資料結構 的一種,此部分包含如何定義一個陣列、如何賦值給陣列、一維陣列、二維陣列、 尋找陣列中的元素、陣列元素的排序等。 如何運用判斷敘述 需活用if-then-else、switch的判斷敘述,以及比較運算子與邏輯運算子,再來就是巢狀判斷敘述的運用。 如何運用重複結構 需了解所學的程式語言有哪些loops 迴圈敘述語法,例如C語言有 for、while、do/while等重複結構,重複結構的目的是讓某一段程式碼重複執行,就像我們每天早上會吃早餐、刷牙、洗臉等,這些早上做的事一年會重複好幾次,而程式語言就是用重複結構來做類似的事。 如何定義函式 函式 在不同的程式語言裡有不一樣的英文名稱,在Java叫做 Method,C/C++叫做Function,Visual Basic叫做Procedure等。函式和數學函數有相同的地方:都是用來運算用的。只不過函數是數學運算,而函式是告訴CPU處理器做一些事情。了解如何定義函式後,也須學習如何使用函式,更進階一點還需要瞭解 遞迴函式(Recursion) 。 如何使用函式庫 libraries  「除非必要,否則別從頭打造積木。」在現今的軟體開發裡,很少有人自己從頭打造軟體積木了,因為很多的軟體積木已經被打造出來...

螢幕白板筆 Pointofix 介紹

圖片
筆者從網路上找到這套用來桌面塗鴉的軟體,剛好有繁體中文的介面可以使用,於是筆記一下。官網: http://www.pointofix.de/download.php 中文化方式見下圖: 用免安裝版本就可以帶著跑了。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.