2018年11月7日 星期三

安裝MinGW - Minimalist GNU for Windows




對於不熟悉Linux,又想要用GNU gcc 編譯你的 C code或g++編譯你的C++ code, 你可以在windows上安裝minGW, 使得你的windows也有最小的GNU程式開發工具.


MinGW - Minimalist GNU for Windows

 1.) MinGW 下載 並在windows下進行安裝

MinGW: A native Windows port of the GNU Compiler Collection (GCC), with freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All of MinGW's software will execute on the 64bit Windows platforms.

安裝後, 在windows上將MinGW的執行檔路徑 加入到[Path環境變數]中, 使得gcc這個指令可以被執行。Path 是一個系統變數,可讓您的作業系統從指令行或終端機視窗中尋找所需的可執行檔。

在桌面的電腦圖示按一下滑鼠右鍵 從內容功能表中選擇內容 按一下進階系統設定連結, 可以看到如下的畫面, 就可以修改環境變數



      


在Path 這個變數, 將其變數值加入 C:\MinGW\bin  (此路徑為MinGW你安裝工具的路徑)





此時你可以開啓windows 命令視窗(cmd.exe) , 執行gcc -v , 會顯示gcc版本, 若能正確顯示, 就表示Path已正確指定到gcc 路徑.

2018年11月3日 星期六

[Linux 程式設計] IPC--Message Queue



Linux 程式設計課堂CH8裡的msg1.c跟msg2.c都會出現如下問題
請問一下為什麼msgget會產生失敗??







fprintf(stderr, "msgget failed with error: %d\n", errno);  

errno: 88 是 #define ENOTSOCK 88 /* Socket operation on non-socket */

這錯誤是核心無法建立Message Queue



解決方式:  讓核心支援Message Queue

cd ~/linux-rpi-4.4.y ;  make menuconfig


 ( toolcahin 路徑要設定好且要有 ncurse.h 才行!)     sudo apt-get install libncurses5-dev

[General Setup] --> [POSIX Message Queues] 編進核心內 [*] 或編成核心模組 [M]









更多核心編譯及模組使用, 可參考 嵌入式Linux設計開發 


按講師提供的Linux程式範例, 執行的正常畫面像是這樣, 




2018年10月25日 星期四

安裝jupyter notebook 於Raspberry Pi


1.) 安裝 jupyter notebook 

sudo pip3 install jupyter   

(約等個15分鐘吧..耐心等候)

2.) 讓 jupyter-notebook Server 可從windows連入

==> jupyter notebook --generate-config

#修改 ~/.jupyter/jupyter_notebook_config.py 找到
#c.NotebookApp.ip = ‘localhost'

改成

c.NotebookApp.ip = '0.0.0.0’ 





# 設定瀏覽器登入 jupyter notebook server密碼

==> jupyter notebook password

3.)啓動jupyter-notebook 


sudo jupyter-notebook

如果是root ,則要多加 --allow-root 才能啓動    sudo jupyter-notebook --allow-root     





4.) 在windows上,打開瀏覽器連入

http://192.168.1.252:8888/


Note: 192.168.1.252 為 Pi的Ethernet IP, 也可以用Wi-Fi 的IP連入, 只要那個IP是Windows能連到的即可 (同一個router所配的IP都OK!)

如何查Pi的IP?  請執行ifconfig  ==> 查看Pi網路IP 

(更多Pi 的基礎操作, 請看課程學習 )




 成功登入 jupyter notebook畫面~



 看一下 jupyter notebook kernel 使用的python 版本






2018年10月24日 星期三

工程師不可不知的影像辨識 3 階段



AI 時代中,「#影像辨」是其中一項熱門的應用,在許多產業都可以見到「影像辨」的蹤跡。若你擁有「影像辨」的技術,意味著你所擁抱的機會更大。然而這項技術實際上有許多眉眉角角」影響著專案的成果,如何讓你的「影像辨識」專案的準確率更高呢?更符合你設定的目標呢?

首先在第1個階段,從低階的處理技術進行 #影像預處 (image preprocessing)。由於你所取得的影像資訊可能有尺寸大小不一、雜訊(noise)、對比度差異等問題,而為了增加後續作業的準確率,依據你所取得的影像狀況,你可以用 #OpenCV 這項工具進行 #影像預處理 的工作,像是 #對比度增 #去雜 #尺寸重 等。

接著在第2階段,運用 #OpenCV 進行像是 #影像閾值#形態學轉#Canny邊緣檢#Harris角點檢 等演算法來擷取 #影像特,方便後續的影像處理作業,像是 ##Segmentation) #(#Classifiacation)等。

然後在第3個階段,運用 #Tensorflow#Keras  #AI 工具建立 #深度學#DeepLearning)模型,讓演算法去 #擷取影像特 進行模型訓練,依據結果,在流程中的相應環節進行調整,讓機器實現「#」的目的。

如果你對影像辨識有濃厚的興趣,並且希望學習不是只有聽聽就忘了,而是能真正從影像處理、影像偵測,一直到影像辨識/感知 完整學會與產業接軌的技術,歡迎加入艾鍗的學習行列。

小班制教學 : 與老師一對一的互動,可以讓你的問題可以得到快速解答。
主題式實作演練 : 循序漸進的主題式引導搭配學員上機演練,讓你自然而然地學會關鍵技術,牢牢記住。
完整範例程式碼 : 程式碼均由老師debug(除錯)過,並附詳細解說加上秘技,讓你複習有依據,學習高成效,不會再因為卡關而放棄成就自己的機會。
產業工程師親授 : 學到書本上沒有的知識,賺到老師實務開發的經驗。而且有老師帶著學,學得更快。

別在把人生白白蹉跎掉,你值得更好的未來!
立即預約專業諮詢,請撥(02)2316-7736
=============================
<AI
影像系列課程>
💡AI深度學習與影像辨識 http://bit.ly/2NRDM5a
💡機器人AI視覺整合實務 http://bit.ly/2PMpYFU
💡影像辨識與邊緣運算實戰
 http://bit.ly/2PRvvuK



2018年9月27日 星期四

ROS Rviz




RVizThe ROS Visualization Tool: 機器人作業系統 3D 視覺化工具。 它的作用就是:一個虛擬世界,用來模擬機器運行效果。簡單的說它就是 ROS 的一個模擬器軟體。一個顯示機器人實體的工具。 





[在Ubuntu 下執行]
roscore

export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_bringup turtlebot3_model.launch



#須事先安裝 turtlebot3 package
cd ~/catkin_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
cd ~/catkin_ws && catkin_make




2018年8月28日 星期二

影像型能學運算 (Morphological Operations)



影像型能學運算 (Morphological Operations):

形態學主要用於二值化後的影像,根據使用者的目的,用來凸顯影像的形狀特徵,像邊界和連通區域等,同時像細化、像素化、修剪毛刺等技術也常用於圖像的預處理和後處理,
In short: A set of operations that process images based on shapes. Morphological operations apply a structuring element to an input image and generate an output image.

The most basic morphological operations are two: Erosion and Dilation. They have a wide array of uses, i.e. :


  1. Removing noise
  2. Isolation of individual elements and joining disparate elements in an image.
  3. Finding of intensity bumps or holes in an image



膨脹(Dilation)==> 白色區域影像變胖

Left image: original image inverted, right image: resulting dilatation




侵蝕(Erosion)  ==>  白色區域影像變瘦

Left image: original image inverted, right image: resulting erosion




斷開(Opening):  Erosion再Dilation 可以將硬幣分離





References:

  1. https://slidesplayer.com/slide/11398438/
  2. http://monkeycoding.com/?p=577
  3. http://blog.christianperone.com/2014/06/simple-and-effective-coin-segmentation-using-python-and-opencv/