<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on G. T. Wang</title>
    <link>https://blog.gtwang.org/categories/python/</link>
    <description>Recent content in Python on G. T. Wang</description>
    <generator>Hugo -- 0.162.0</generator>
    <language>zh-tw</language>
    <copyright>G. T. Wang</copyright>
    <lastBuildDate>Thu, 03 Aug 2023 09:33:29 +0800</lastBuildDate>
    <atom:link href="https://blog.gtwang.org/categories/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤</title>
      <link>https://blog.gtwang.org/python/python-pyautogui-script-control-mouse-and-keyboard-tutorial-examples/</link>
      <pubDate>Thu, 03 Aug 2023 09:33:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pyautogui-script-control-mouse-and-keyboard-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 程式中使用 PyAutoGUI 模組來自動操作滑鼠與鍵盤，將原本人工的操作改以程式來自動執行。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/asweigart/pyautogui&#34;&gt;PyAutoGUI&lt;/a&gt; 是一套可以控制電腦滑鼠與鍵盤的 Python 模組，適合用來將重複性的人工滑鼠或鍵盤操作自動化，甚至可以用於撰寫簡單的遊戲外掛程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-eciespy-ecc-asymmetric-encryption-tutorial-examples/</link>
      <pubDate>Thu, 08 Dec 2022 15:28:16 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-eciespy-ecc-asymmetric-encryption-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;eciespy&lt;/code&gt; 模組產生 ECC 金鑰，並對資料進行加密與解密。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%A4%AD%E5%9C%86%E6%9B%B2%E7%BA%BF%E5%AF%86%E7%A0%81%E5%AD%A6&#34;&gt;橢圓曲線密碼學&lt;/a&gt;（Elliptic Curve Cryptography，縮寫為 ECC）是一種新興的公鑰加密方式，跟 RSA 加密演算法相較之下，ECC 只需要較小的密鑰長度即可提供相當等級的安全性，所需要的 CPU 計算與記憶體資源也相對較低。&lt;/p&gt;</description>
    </item>
    <item>
      <title>隱寫術隱藏資料於 PyTorch 模型檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/steganography-hide-secret-data-in-pytorch-model-file-tutorial-examples/</link>
      <pubDate>Sun, 27 Nov 2022 20:26:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/steganography-hide-secret-data-in-pytorch-model-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用隱寫術的技巧，將各種機密資料藏匿於 PyTorch 的模型檔案中，並維持 PyTorch 模型依然可以正常使用。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Steganography&#34;&gt;隱寫術（Steganography）&lt;/a&gt;是一種將機敏資料隱藏在正常檔案中，避免被偵測到的一種技術，在實作上有非常多種方式。以下介紹如何將任何類型的機敏檔案，藏在 PyTorch 的模型檔案中，除了偽裝成正常的 PyTorch 模型檔案避免被發現之外，我們也同時應用了 LZMA 演算法壓縮資料，讓資料讓盡可能縮小，並以 AES 加密演算法加密資料，縱使有人知道其中暗藏機敏資料，但沒有密碼也是無法解開。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 python-magic 模組檢查檔案類型教學與範例</title>
      <link>https://blog.gtwang.org/python/python-magic-module-file-type-identification-tutorial-examples/</link>
      <pubDate>Tue, 16 Aug 2022 14:41:49 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-magic-module-file-type-identification-tutorial-examples/</guid>
      <description>&lt;p&gt;本文介紹如何在 Python 指令稿中使用 &lt;code&gt;python-magic&lt;/code&gt; 模組檢查與判斷各種檔案的類型。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/ahupp/python-magic&#34;&gt;python-magic&lt;/a&gt; 是一個 &lt;code&gt;libmagic&lt;/code&gt; 檔案類型辨識函式庫的 Python 介面模組，&lt;code&gt;libmagic&lt;/code&gt; 可以藉由比對檔案的標頭來判斷檔案的類型，在 Linux 中的 &lt;code&gt;file&lt;/code&gt; 指令就是利用這樣的方式來判斷檔案類型。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 HTTPX 建立 HTTP 請求教學與範例</title>
      <link>https://blog.gtwang.org/python/python-httpx-fully-featured-http-client-tutorial-examples/</link>
      <pubDate>Tue, 09 Aug 2022 10:12:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-httpx-fully-featured-http-client-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 HTTPX 這個 HTTP client 模組，建立各種的 HTTP 請求，下載網頁資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.python-httpx.org/&#34;&gt;HTTPX&lt;/a&gt; 是一個 Python 3 的多功能 HTTP client 模組，提供了同步（sync）與非同步（async）的 API 介面，支援 HTTP/1.1 與 HTTP/2，可以用來開發各種 HTTP 通訊相關的應用程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 assert 在開發階段協助除錯教學與範例</title>
      <link>https://blog.gtwang.org/python/python-assert-statement-tutorial-examples/</link>
      <pubDate>Sun, 24 Jul 2022 20:03:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-assert-statement-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 &lt;code&gt;assert&lt;/code&gt; 敘述，協助程式設計者在開發階段偵測程式臭蟲（bugs）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;code&gt;assert&lt;/code&gt; 敘述是一個很實用的除錯輔助工具，可在程式開發階段協助程式設計者偵測不該發生的條件是否發生，藉此提升程式的穩定與可靠性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 zipfile 模組壓縮、解壓縮 ZIP 檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-zipfile-module-compression-decompression-tutorial-examples/</link>
      <pubDate>Wed, 01 Jun 2022 15:24:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-zipfile-module-compression-decompression-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;zipfile&lt;/code&gt; 模組，壓縮與解壓縮 ZIP 檔案，並查看 ZIP 檔案資訊。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 標準函式庫中的 &lt;a href=&#34;https://docs.python.org/3/library/zipfile.html&#34;&gt;zipfile 模組&lt;/a&gt;可以用來壓縮與解壓縮 ZIP 檔案，以下是使用的教學與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 LINE Notify 自動傳送即時訊息、圖片教學與範例</title>
      <link>https://blog.gtwang.org/python/python-line-notify-send-messages-images-tutorial-examples/</link>
      <pubDate>Sat, 28 May 2022 19:44:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-line-notify-send-messages-images-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 LINE Notify 服務，在程式中自動發送即時訊息與圖片至 LINE 聊天群組。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://notify-bot.line.me/zh_TW/&#34;&gt;LINE Notify&lt;/a&gt; 是 LINE 的一項免費自動發送訊息 API 服務，可以讓程式設計者或系統管理者用程式發送 LINE 訊息至指定的聊天室，非常適合用來發送系統的即時告警訊息。以下是 Python 以 LINE Notify 發送即時訊息的使用方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 pytube 自動下載 YouTube 影片教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pytube-youtube-download-tool-tutorial-examples/</link>
      <pubDate>Sun, 15 May 2022 15:49:16 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pytube-youtube-download-tool-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何使用 Python 的 &lt;code&gt;pytube&lt;/code&gt; 模組，自動下載 YouTube 的影片。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://pytube.io/&#34;&gt;pytube&lt;/a&gt; 是一個專門用來下載 YouTube 影片的 Python 模組，除了提供程式介面的自動化下載功能，也附帶有指令下載工具，可以快速下載 YouTube 的影片。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取、顯示 NIfTI 影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-nibabel-read-show-nifti-image-tutorial-examples/</link>
      <pubDate>Tue, 19 Apr 2022 11:15:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-nibabel-read-show-nifti-image-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 Python 中使用 NiBabel 或 SimpleITK 模組讀取並顯示 NIfTI 影像（&lt;code&gt;.nii&lt;/code&gt;、&lt;code&gt;.nii.gz&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nipy.org/nibabel/&#34;&gt;NiBabel&lt;/a&gt; 是一個專門用於處理醫學與神經影像的模組，對於 NIfTI 影像格式支援度非常好，而 &lt;a href=&#34;https://simpleitk.org/&#34;&gt;SimpleITK&lt;/a&gt; 則是通用型的影像處理模組，可以在讀取 NIfTI 影像之後，進行各種後續分析。這兩套工具都可以用來查看 NIfTI 影像，以下是操作教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyTorch 使用 YOLOv5 與 DeepSORT 進行車輛物件偵測、計算車流量教學與範例</title>
      <link>https://blog.gtwang.org/python/pytorch-yolo-v5-object-car-detection-calculate-traffic-flow-tutorial-examples/</link>
      <pubDate>Tue, 12 Apr 2022 10:49:52 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pytorch-yolo-v5-object-car-detection-calculate-traffic-flow-tutorial-examples/</guid>
      <description>&lt;p&gt;本篇介紹如何在 PyTorch 框架之下使用 YOLOv5 模型，偵測移動車輛、計算雙向的車流量統計。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/pytorch-yolo-v5-object-egg-detection-models-tutorial-examples/&#34;&gt;PyTorch 自行訓練 YOLOv5 物件偵測模型教學與範例&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;道路監視器即時影像&#34;&gt;道路監視器即時影像&lt;/h2&gt;
&lt;p&gt;在網路上有多許免費的道路監視器即時影像（例如 &lt;a href=&#34;https://tw.live/&#34;&gt;tw.live&lt;/a&gt;），這些影像的格式大部分是 MJPEG，我們可以利用 &lt;a href=&#34;https://www.videolan.org/vlc/&#34;&gt;VLC 軟體&lt;/a&gt;將這類的及時影像儲存為一般的影片檔，方便後續的操作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Paho 函式庫發布、訂閱 MQTT 訊息教學與範例</title>
      <link>https://blog.gtwang.org/python/python-paho-library-mqtt-client-tutorial-examples/</link>
      <pubDate>Fri, 25 Mar 2022 13:53:10 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-paho-library-mqtt-client-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 Paho 函式庫實作 MQTT 協定的發布與訂閱架構，傳送與接收訊息。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.eclipse.org/paho/&#34;&gt;Eclipse Paho&lt;/a&gt; 是一套開放原始碼的 MQTT 函式庫，有各種程式語言的實作版本，在 Python 中可使用 &lt;a href=&#34;https://github.com/eclipse/paho.mqtt.python&#34;&gt;Eclipse Paho MQTT Python Client&lt;/a&gt;，以下是使用教學與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyTorch 自行訓練 YOLOv5 物件偵測模型教學與範例</title>
      <link>https://blog.gtwang.org/python/pytorch-yolo-v5-object-egg-detection-models-tutorial-examples/</link>
      <pubDate>Tue, 22 Mar 2022 11:03:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pytorch-yolo-v5-object-egg-detection-models-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 PyTorch 架構的 YOLOv5 預訓練模型，自行訓練物件偵測模型，用於辨識雞蛋。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-yolov5-環境&#34;&gt;安裝 YOLOv5 環境&lt;/h2&gt;
&lt;p&gt;安裝 Python 的 &lt;code&gt;venc&lt;/code&gt; 套件之後，建立一個 YOLOv5 專用的 Python 虛擬環境：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 OpenCV 開啟、顯示、處理與儲存 RTSP 串流影片教學與範例</title>
      <link>https://blog.gtwang.org/python/python-opencv-open-display-save-rtsp-stream-tutorial-examples/</link>
      <pubDate>Thu, 17 Mar 2022 18:51:22 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-opencv-open-display-save-rtsp-stream-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 OpenCV 搭配多行程（multiprocessing）的方式開啟、顯示、處理與儲存 RTSP 串流影片。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;測試用-rtsp-串流&#34;&gt;測試用 RTSP 串流&lt;/h2&gt;
&lt;p&gt;網路上有一些測試用的 RTSP 串流伺服器，可用於程式的開發與測試：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django 網頁架構整合 Celery 工作佇列排程系統教學與範例</title>
      <link>https://blog.gtwang.org/python/django-web-framework-celery-distributed-task-queue-integration-tutorial-examples/</link>
      <pubDate>Thu, 17 Feb 2022 13:39:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/django-web-framework-celery-distributed-task-queue-integration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Ubuntu Linux 環境中整合 Django 網頁架構與 Celery 分散式工作佇列排程系統，讓網頁應用程式處理大量運算工作。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;建立-django-應用程式&#34;&gt;建立 Django 應用程式&lt;/h2&gt;
&lt;p&gt;這裡我們採用 &lt;a href=&#34;https://blog.gtwang.org/python/ubuntu-linux-django-with-postgres-nginx-and-gunicorn-development-deployment-tutorial-examples/&#34;&gt;Ubuntu Linux 以 Django 搭配 PostgreSQL、Nginx、Gunicorn 開發布署教學與範例&lt;/a&gt;中所敘述的作法，建立基礎的 Django 應用程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Celery 分散式工作佇列排程系統入門教學（二）</title>
      <link>https://blog.gtwang.org/python/celery-distributed-task-queue-getting-started-2/</link>
      <pubDate>Mon, 24 Jan 2022 16:04:07 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/celery-distributed-task-queue-getting-started-2/</guid>
      <description>&lt;p&gt;介紹 Celery 分散式工作佇列排程系統細部功能的使用方式與範例。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;模組檔案結構&#34;&gt;模組檔案結構&lt;/h2&gt;
&lt;p&gt;建立一個 &lt;code&gt;proj&lt;/code&gt; 模組，檔案結構如下：&lt;/p&gt;
&lt;pre class=&#34;tldr-block&#34;&gt;proj/__init__.py
    /celery.py
    /tasks.py&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;celery.py&lt;/code&gt; 的內容如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;celery&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Celery&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立 Celery Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Celery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s1&#34;&gt;&amp;#39;proj&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;                       &lt;span class=&#34;c1&#34;&gt;# 以 __main__ 執行時的名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;broker&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;redis://localhost/&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Broker 位址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;backend&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;redis://localhost/&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Backend 位址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;include&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;proj.tasks&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# 自動引入的模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Celery 設定（可自行調整）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;result_expires&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 計算結果保存時間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;broker&lt;/code&gt; 參數可設定 broker 的位置，&lt;code&gt;backend&lt;/code&gt; 參數可設定儲存計算結果的位置，可用的 broker 與 backend 可參考 &lt;a href=&#34;https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/index.html&#34;&gt;Celery 的 Backends and Brokers 文件&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Celery 分散式工作佇列排程系統入門教學（一）</title>
      <link>https://blog.gtwang.org/python/celery-distributed-task-queue-getting-started-1/</link>
      <pubDate>Wed, 19 Jan 2022 08:19:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/celery-distributed-task-queue-getting-started-1/</guid>
      <description>&lt;p&gt;介紹如何使用 Celery 分散式工作佇列排程系統，派送大量計算工作，監控排程、並於計算完成後取回結果。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://docs.celeryproject.org/&#34;&gt;Celery&lt;/a&gt; 是一個以 Python 開發的分散式工作佇列排程系統，可以結合各類型的資料庫與 broker 處理即時或預定的排程工作，監控工作的排程狀況，等待計算完成之後再取回計算結果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 Redis 資料庫實作發布 Publish 訂閱 Subscribe 模式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-redis-database-publish-subscribe-pattern-tutorial-examples/</link>
      <pubDate>Tue, 18 Jan 2022 07:55:49 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-redis-database-publish-subscribe-pattern-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中透過 Redis 資料庫，實作訊息的發布（publish）與訂閱（subscribe）模式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝與測試-redis-py-模組&#34;&gt;安裝與測試 &lt;code&gt;redis-py&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;在 Python 中若要使用 Redis 資料庫，可以採用 &lt;a href=&#34;https://github.com/redis/redis-py&#34;&gt;redis-py 模組&lt;/a&gt;，此模組可以使用 &lt;code&gt;pip&lt;/code&gt; 安裝：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Linux 以 Django 搭配 PostgreSQL、Nginx、Gunicorn 開發布署教學與範例</title>
      <link>https://blog.gtwang.org/python/ubuntu-linux-django-with-postgres-nginx-and-gunicorn-development-deployment-tutorial-examples/</link>
      <pubDate>Fri, 14 Jan 2022 10:48:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/ubuntu-linux-django-with-postgres-nginx-and-gunicorn-development-deployment-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Django 搭配 PostgreSQL 資料庫、Nginx 與 Gunicorn 網頁伺服器，開發與布署基礎的網頁應用程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝必要套件&#34;&gt;安裝必要套件&lt;/h2&gt;
&lt;p&gt;這裡我們選擇採用 Python 3 的環境進行開發，搭配 PostgreSQL 資料庫、Nginx 網頁伺服器，這些相關套件可透過 &lt;code&gt;apt&lt;/code&gt; 安裝：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 PIL.Image 疊合兩張影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pil-image-blend-composite-two-images-tutorial-examples/</link>
      <pubDate>Sun, 26 Dec 2021 10:28:56 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pil-image-blend-composite-two-images-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;PIL.Image&lt;/code&gt; 的 &lt;code&gt;blend()&lt;/code&gt; 或 &lt;code&gt;composite()&lt;/code&gt; 函數以半透明的方式合併兩張影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;如果要將兩張影像重疊起來，將兩張影像變成半透明之後合併起來，可以使用 &lt;a href=&#34;https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.blend&#34;&gt;PIL.Image.blend()&lt;/a&gt; 函數來處理，以下是處理的步驟。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 CRAFT 偵測圖片文字教學與範例</title>
      <link>https://blog.gtwang.org/python/python-craft-character-region-awareness-for-text-detection-tutorial-examples/</link>
      <pubDate>Wed, 22 Dec 2021 10:58:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-craft-character-region-awareness-for-text-detection-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 CRAFT 演算法偵測圖片中彎曲的文字。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-craft-text-detector-模組&#34;&gt;安裝 &lt;code&gt;craft-text-detector&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://arxiv.org/abs/1904.01941&#34;&gt;CRAFT&lt;/a&gt; 是一個以深度學習為基礎的文字偵測方法，而作者也將相關的 PyTorch 程式碼放在 &lt;a href=&#34;https://github.com/clovaai/CRAFT-pytorch&#34;&gt;GitHub 網站&lt;/a&gt;上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>DICOM 影像中文標籤與 UTF-8 編碼儲存問題教學與範例</title>
      <link>https://blog.gtwang.org/python/dicom-tags-chinese-characters-utf8-encoding-tutorial-examples/</link>
      <pubDate>Tue, 21 Dec 2021 14:53:43 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/dicom-tags-chinese-characters-utf8-encoding-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;pydicom&lt;/code&gt; 模組設定 Specific Character Set，讓 DICOM 標籤以 UTF-8 編碼儲存中文字。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;載入-dicom-檔案&#34;&gt;載入 DICOM 檔案&lt;/h2&gt;
&lt;p&gt;這裏我們載入 &lt;code&gt;pydicom&lt;/code&gt; 內建的 DICOM 測試檔案作為示範，關於 &lt;code&gt;pydicom&lt;/code&gt; 的基本操作說明，可以參考 &lt;a href=&#34;https://blog.gtwang.org/python/python-pydicom-read-edit-dicom-tutorial-examples/&#34;&gt;Python 使用 Pydicom 讀取、編輯 DICOM 影像檔案教學與範例&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 偵測中文字、姓名、拼音教學與範例</title>
      <link>https://blog.gtwang.org/python/python-chinese-characters-name-pinyin-detection-tutorial-examples/</link>
      <pubDate>Tue, 21 Dec 2021 08:39:13 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-chinese-characters-name-pinyin-detection-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 偵測文字中的中文姓名或拼音，用於個人資料之去識別化。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;檢查中文拼音&#34;&gt;檢查中文拼音&lt;/h2&gt;
&lt;p&gt;使用 Python 的 &lt;a href=&#34;https://docs.python.org/3/library/re.html#re.finditer&#34;&gt;re.finditer&lt;/a&gt; 以正規表示法將資料中的每一個單字切出來，再逐一檢查是否為中文字或是拼音，而檢查中文拼音所使用到的對照表，可以從&lt;a href=&#34;https://www.boca.gov.tw/cp-2-4226-c0eff-1.html&#34;&gt;外交部領事事務局的護照外文姓名拼音對照表&lt;/a&gt;取得，亦可直接下載我整理好的 &lt;a href=&#34;https://blog.gtwang.org/python/python-chinese-characters-name-pinyin-detection-tutorial-examples/pinyin-20211220.zip&#34;&gt;CSV 檔案&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyTorch 遷移式學習 ResNet 預訓練模型分類 MNIST 數字影像教學與範例</title>
      <link>https://blog.gtwang.org/python/pytorch-transfer-learning-resnet18-classify-mnist-tutorial-examples/</link>
      <pubDate>Mon, 20 Dec 2021 10:50:43 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pytorch-transfer-learning-resnet18-classify-mnist-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 PyTorch 實作遷移式學習，以 ResNet18 預訓練模型訓練可分類 MNIST 數字影像的模型。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;載入-mnist-數字資料集&#34;&gt;載入 MNIST 數字資料集&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://yann.lecun.com/exdb/mnist/&#34;&gt;MNIST 資料集&lt;/a&gt;是一個包含 0 到 9 手寫數字的影像資料集，其影像格式為灰階影像，而 ResNet18 模型所輸入的影像格式卻為 RGB 的影像，為了讓 MNIST 的影像可以套用 ResNet18 模型，在資料載入時我們使用一個自訂的轉換函數，將灰階影像轉為 RGB 影像，轉換的方式就是把灰階影像的單一 channel 複製成 RGB 影像的三個 channel。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyTorch 遷移式學習 ResNet 預訓練模型分類螞蟻、蜜蜂圖片教學與範例</title>
      <link>https://blog.gtwang.org/python/pytorch-transfer-learning-resnet18-classify-ants-and-bees-tutorial-examples/</link>
      <pubDate>Sat, 18 Dec 2021 08:46:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pytorch-transfer-learning-resnet18-classify-ants-and-bees-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 PyTorch 深度學習架構下透過遷移式學習，使用 ResNet 預訓練模型分類螞蟻與蜜蜂圖片。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;載入必要模組&#34;&gt;載入必要模組&lt;/h2&gt;
&lt;p&gt;首先載入一些必要的模組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;__future__&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;print_function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;division&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torch.nn&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;nn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torch.optim&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;optim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torch.optim&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lr_scheduler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;numpy&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torchvision&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;torchvision&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datasets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;transforms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;copy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;載入資料&#34;&gt;載入資料&lt;/h2&gt;
&lt;p&gt;這裡我們將從 &lt;a href=&#34;https://image-net.org/&#34;&gt;ImageNet&lt;/a&gt; 中取出螞蟻（ants）與蜜蜂（bees）的圖片各約 120 張作為訓練資料集，然後拿另外各約 75 張圖片作為驗證資料集，這樣的資料量對於一般的類神經網路來說算是非常少的，適合採用遷移式學習的方式來處理。實際的資料可以&lt;a href=&#34;https://download.pytorch.org/tutorial/hymenoptera_data.zip&#34;&gt;從 PyTorch 的網站上下載&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyTorch 深度學習函式庫 Fashion-MNIST 影像分類入門教學與範例</title>
      <link>https://blog.gtwang.org/python/pytorch-deep-learning-library-fashion-mnist-image-classification-quick-start-tutorial-examples/</link>
      <pubDate>Wed, 15 Dec 2021 12:16:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pytorch-deep-learning-library-fashion-mnist-image-classification-quick-start-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 PyTorch 深度學習函式庫，以 Fashion-MNIST 資料集訓練影像分類模型，並進行預測。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;fashion-mnist-資料集&#34;&gt;Fashion-MNIST 資料集&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/zalandoresearch/fashion-mnist&#34;&gt;Fashion-MNIST 資料集&lt;/a&gt;中包含了 60,000 張圖片的訓練資料集與 10,000 張圖片的測試資料集，圖片的格式都是灰階的，類別分為以下 10 類：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 auditok 聲音活性偵測工具教學與範例</title>
      <link>https://blog.gtwang.org/python/python-auditok-audio-activity-detection-tool-tutorial-examples/</link>
      <pubDate>Thu, 09 Dec 2021 12:53:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-auditok-audio-activity-detection-tool-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;auditok&lt;/code&gt; 模組，偵測並分割聲音資料中有訊號（有人講話等）的區段。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://github.com/amsehili/auditok&#34;&gt;auditok 模組&lt;/a&gt;是一個&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E8%AF%AD%E9%9F%B3%E6%B4%BB%E6%80%A7%E6%A3%80%E6%B5%8B&#34;&gt;聲音活性檢測工具&lt;/a&gt;，可以偵測聲音資料中是否存在訊號，可以處理即時的音訊輸入（例如麥克風）或是各種聲音檔案。&lt;/p&gt;
&lt;h2 id=&#34;安裝-auditok-模組&#34;&gt;安裝 &lt;code&gt;auditok&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;auditok&lt;/code&gt; 模組可以透過 &lt;code&gt;pip&lt;/code&gt; 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 auditok 模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install auditok
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通常在分析聲音資料時，除了 &lt;code&gt;auditok&lt;/code&gt; 之外，還會搭配一些其他的相關模組，所以建議一起安裝：&lt;/p&gt;</description>
    </item>
    <item>
      <title>fastai 深度學習函式庫安裝、入門教學與範例</title>
      <link>https://blog.gtwang.org/python/fastai-deep-learning-library-quick-start-tutorial/</link>
      <pubDate>Mon, 06 Dec 2021 10:04:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/fastai-deep-learning-library-quick-start-tutorial/</guid>
      <description>&lt;p&gt;介紹如何在 Linux 中安裝與使用 fastai 深度學習函式庫，使用 ResNet 預訓練模型辨識貓的圖片。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-fastai&#34;&gt;安裝 fastai&lt;/h2&gt;
&lt;p&gt;若要在 Miniconda 環境中安裝 fastai，可以執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# miniconda 環境安裝 fastai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda install -c fastchan fastai
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;若要在 Anaconda 環境中安裝 fastai，則可以執行：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 librosa 分析聲音訊號、音樂檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-librosa-package-analysis-music-and-audio-tutorial-examples/</link>
      <pubDate>Sun, 05 Dec 2021 10:35:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-librosa-package-analysis-music-and-audio-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Ubuntu Linux 中使用 Python 的 &lt;code&gt;librosa&lt;/code&gt; 模組分析聲音訊號或各種音樂檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://librosa.org/&#34;&gt;librosa&lt;/a&gt; 是一個專門用來分析聲音訊號的 Python 模組，以下是在 Ubuntu Linux 中安裝與使用 &lt;code&gt;librosa&lt;/code&gt; 模組的教學，以及各種分析流程範例程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 非同步 I/O asyncio 與 aiohttp 模組使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-asyncio-aiohttp-asynchronous-io-tutorial-examples/</link>
      <pubDate>Thu, 25 Nov 2021 15:35:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-asyncio-aiohttp-asynchronous-io-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;asyncio&lt;/code&gt; 與 &lt;code&gt;aiohttp&lt;/code&gt; 模組開發異步 I/O 的高效率程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;異步 I/O（asynchronous I/O，或稱非同步 I/O）通常很適合用於 I/O 密集型（I/O bound）或高階結構化的網路程式，以下將介紹 Python 中的異步 I/O 程式設計與實作方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 multiprocessing 模組開發多核心平行運算程式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-multiprocessing-parallel-computing-tutorial-examples/</link>
      <pubDate>Wed, 24 Nov 2021 14:34:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-multiprocessing-parallel-computing-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;multiprocessing&lt;/code&gt; 模組，開發多核心平行運算程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://docs.python.org/3/library/multiprocessing.html&#34;&gt;multiprocessing&lt;/a&gt; 是一個多行程模組，功能類似多執行緒的 &lt;code&gt;threading&lt;/code&gt; 模組，可以讓開發者使用多核心的 CPU 進行平行化程式設計，加速程式處理速度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 比較兩個檔案內容是否相同的各種方法</title>
      <link>https://blog.gtwang.org/python/python-how-to-compare-two-files/</link>
      <pubDate>Sat, 20 Nov 2021 20:21:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-how-to-compare-two-files/</guid>
      <description>&lt;p&gt;介紹如何在 Python 使用各種函數判斷兩個檔案是否相同的方法。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;ospathsamefile-函數&#34;&gt;&lt;code&gt;os.path.samefile&lt;/code&gt; 函數&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.python.org/3/library/os.path.html#os.path.samefile&#34;&gt;os.path.samefile 函數&lt;/a&gt;可以依據儲存設備的編號與檔案的 inode 編號來判斷兩個檔案路徑是否為同一個檔案：&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenPhi 讀取 PHILIPS iSyntax 數位病理全玻片影像 WSI 教學與範例</title>
      <link>https://blog.gtwang.org/python/openphi-philips-isyntax-whole-slide-image-pathology-wsi-tutorial-examples/</link>
      <pubDate>Wed, 27 Oct 2021 20:12:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/openphi-philips-isyntax-whole-slide-image-pathology-wsi-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 OpenPhi 模組，讀取 PHILIPS iSyntax 格式的數位病理全玻片影像（WSI）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;philips-isyntax&#34;&gt;PHILIPS iSyntax&lt;/h2&gt;
&lt;p&gt;iSyntax 是 PHILIPS 公司所使用的 WSI 影像格式，應用小波轉換技術加速 WSI 影像縮放與平移動作，並且也避免了「金字塔」格式在低倍率圖像的冗餘存儲，大幅降低影像檔案大小，降幅達 25%，除此之外 iSyntax 格式也沒有位元深度（bit-depths）與通道（channels）數上限，詳細的說明可以參考 &lt;a href=&#34;https://www.usa.philips.com/healthcare/sites/pathology/about/sdk&#34;&gt;PHILIPS Pathology SDK&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 OpenCV 在圖片上加入文字方塊教學與範例</title>
      <link>https://blog.gtwang.org/python/python-opencv-add-background-box-with-text-tutorial-examples/</link>
      <pubDate>Tue, 05 Oct 2021 21:11:28 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-opencv-add-background-box-with-text-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 OpenCV 在圖片中加入半透明的文字方塊。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;這裡介紹兩種在圖片中加入文字方塊的方法，一種是使用 OpenCV 本身的功能，另外一種是使用 &lt;code&gt;pyshine&lt;/code&gt; 模組。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 驗證台灣身分證字號教學與範例</title>
      <link>https://blog.gtwang.org/python/python-verify-taiwanese-id-card-number-tutorial-examples/</link>
      <pubDate>Mon, 04 Oct 2021 19:53:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-verify-taiwanese-id-card-number-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹台灣身份證字號的驗證規則，以及如何使用 Python 撰寫身分證字號驗證程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;台灣身份證字號驗證規則&#34;&gt;台灣身份證字號驗證規則&lt;/h2&gt;
&lt;p&gt;若要驗證台灣的身分證字號，首先將第一個英文字母依照下表轉為數字：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Pydicom 讀取 Overlay 影像資訊教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pydicom-read-show-overlay-data-information-tutorial-examples/</link>
      <pubDate>Mon, 04 Oct 2021 15:40:54 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pydicom-read-show-overlay-data-information-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 Pydicom 模組，讀取並顯示 DICOM 檔案中的 Overlay 影像內容與相關資訊。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;dicom-的-overlays-資訊&#34;&gt;DICOM 的 Overlays 資訊&lt;/h2&gt;
&lt;p&gt;DICOM 的 &lt;a href=&#34;http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.9.2.html&#34;&gt;Overlays&lt;/a&gt; 可以用來儲存最多 16 張單位元（one bit）的影像（群組編號從 &lt;code&gt;6000&lt;/code&gt;、&lt;code&gt;6002&lt;/code&gt; 到 &lt;code&gt;601E&lt;/code&gt;），個別的群組（group）中有各自對應的相關資訊元素（例如 Overlay 的影像尺寸等）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 命令列參數 sys.argv 使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-sys-argv-command-line-arguments-tutorial-examples/</link>
      <pubDate>Mon, 09 Aug 2021 13:45:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-sys-argv-command-line-arguments-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;sys.argv&lt;/code&gt; 讀取命令列參數，取得使用者輸入的資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;命令列的參數就是當使用者在執行程式時，附加在指令後方的參數，使用者可以透過參數來傳遞各種資料、選項或檔案等資訊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 列表映射 map 函數教學與範例</title>
      <link>https://blog.gtwang.org/python/python-map-function-tutorial-examples/</link>
      <pubDate>Fri, 06 Aug 2021 11:38:11 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-map-function-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;map&lt;/code&gt; 函數搭配指定的函數逐一處理列表的每個元素。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;套用自訂函數處理列表元素&#34;&gt;套用自訂函數處理列表元素&lt;/h2&gt;
&lt;p&gt;Python 的 &lt;code&gt;map&lt;/code&gt; 函數可以將指定的自訂函數逐一套用至列表中的每個元素，並傳回所有計算結果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取、產生 JSON 格式資料教學與範例</title>
      <link>https://blog.gtwang.org/python/python-read-write-json-encode-decode-tutorial-examples/</link>
      <pubDate>Mon, 02 Aug 2021 10:35:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-read-write-json-encode-decode-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用內建的 &lt;code&gt;json&lt;/code&gt; 模組，讀取、解析、產生與寫入 JSON 格式資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取-json-檔案&#34;&gt;讀取 JSON 檔案&lt;/h2&gt;
&lt;p&gt;假設我們有一個 JSON 檔案 &lt;code&gt;data.json&lt;/code&gt;，其內容如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Pydicom 讀取、寫入 DICOM 波形資料教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pydicom-read-write-dicom-waveforms-tutorial-examples/</link>
      <pubDate>Fri, 16 Jul 2021 15:59:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pydicom-read-write-dicom-waveforms-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 Pydicom 模組讀取與寫入 DICOM 格式的波形資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;dicom-波形資料&#34;&gt;DICOM 波形資料&lt;/h2&gt;
&lt;p&gt;在 DICOM 的標準中，有許多的 IOD 都有包含波形的資料，例如 &lt;a href=&#34;http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.34.3.html&#34;&gt;12-Lead ECG&lt;/a&gt;、&lt;a href=&#34;http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.34.9.html&#34;&gt;Respiratory Waveform&lt;/a&gt; 與 &lt;a href=&#34;http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.34.11.html&#34;&gt;Real-Time Audio Waveform&lt;/a&gt;，這些 IOD 都使用 &lt;a href=&#34;http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.10.9.html&#34;&gt;Waveform Module&lt;/a&gt; 來儲存一條或多條波形的資料。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 pyClamd 模組使用 ClamAV 掃毒教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pyclamd-module-clamav-scan-for-virus-tutorial-examples/</link>
      <pubDate>Wed, 23 Jun 2021 20:07:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pyclamd-module-clamav-scan-for-virus-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 pyClamd 模組，使用 ClamAV 進行檔案的掃毒。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://xael.org/pages/pyclamd-en.html&#34;&gt;pyClamd 模組&lt;/a&gt;是一個 &lt;code&gt;clamd&lt;/code&gt;（ClamAV 的常駐服務）的 Python 介面，透過 pyClamd 可以讓一般的 Python 程式加入病毒偵測功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：讀取、寫入 NIfTI 影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-write-nifti-image/</link>
      <pubDate>Sat, 24 Apr 2021 15:44:49 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-write-nifti-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 讀取與寫入 NIfTI 影像檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;nifti-影像&#34;&gt;NIfTI 影像&lt;/h2&gt;
&lt;p&gt;NIfTI 影像格式全名為 Neuroimaging Informatics Technology Initiative，是一種專門為神經影像資料設計的格式，早期多應用於 fMRI 影像上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 IceCream 輸出開發除錯資訊教學與範例</title>
      <link>https://blog.gtwang.org/python/python-icecream-debug-tutorial-examples/</link>
      <pubDate>Wed, 21 Apr 2021 20:10:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-icecream-debug-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;icecream&lt;/code&gt; 模組幫助開發者進行程式的測試與除錯。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/gruns/icecream&#34;&gt;IceCream&lt;/a&gt; 是一套專門用於輸出除錯訊息的 Python 模組，其功能類似 &lt;code&gt;print()&lt;/code&gt; 函數，但是在輸出除錯訊息時更方便。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 openpyxl 模組繪製 Excel 圖表教學</title>
      <link>https://blog.gtwang.org/excel/python-openpyxl-excel-charts-tutorial-examples/</link>
      <pubDate>Wed, 14 Apr 2021 20:03:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/excel/python-openpyxl-excel-charts-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;openpyxl&lt;/code&gt; 模組繪製各種圖形，輸出至 Excel 檔案中。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;長條圖&#34;&gt;長條圖&lt;/h2&gt;
&lt;p&gt;在建立圖形之前，先產生一些測試用的資料，放進 Excel 表格中。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;openpyxl&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Workbook&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;openpyxl.chart&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BarChart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Reference&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Series&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 新增 Excel 活頁簿&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wb&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Workbook&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得目前工作表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ws&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wb&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;active&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 將測試資料填入 Excel 工作表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;ws&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接著以 &lt;code&gt;Reference&lt;/code&gt; 建立繪圖用資料的參照，再呼叫 &lt;code&gt;BarChart&lt;/code&gt; 繪製長條圖。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 從標準輸入讀取資料教學與範例</title>
      <link>https://blog.gtwang.org/python/python-sys-stdin-input-tutorial-examples/</link>
      <pubDate>Wed, 31 Mar 2021 10:25:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-sys-stdin-input-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 指令稿中從標準輸入讀取資料，並提供實際的應用範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;input-讀取單行資料&#34;&gt;&lt;code&gt;input&lt;/code&gt; 讀取單行資料&lt;/h2&gt;
&lt;p&gt;Python 的 &lt;code&gt;input&lt;/code&gt; 函數可以輸出提示訊息，並從標準輸入讀取一行文字資料，對於互動式的 Python 指令稿來說，預設的標準輸入就是鍵盤，所以這種方式時常用來讓使用者從鍵盤輸入資料：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取 SAS7BDAT 格式 SAS 檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-read-sas7bdat-format-sas-file-tutorial-examples/</link>
      <pubDate>Thu, 25 Mar 2021 19:06:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-read-sas7bdat-format-sas-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;sas7bdat&lt;/code&gt; 模組讀取 SAS7BDAT 格式的 SAS 檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/r/r-read-sas7bdat-format-sas-file-tutorial-examples/&#34;&gt;R 讀取 SAS7BDAT 格式 SAS 檔案教學與範例&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;安裝-sas7bdat-模組&#34;&gt;安裝 &lt;code&gt;sas7bdat&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;Python 的 &lt;a href=&#34;https://pypi.org/project/sas7bdat/&#34;&gt;&lt;code&gt;sas7bdat&lt;/code&gt;&lt;/a&gt; 模組可以透過 &lt;code&gt;pip&lt;/code&gt; 指令來安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 sas7bdat 模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install sas7bdat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;讀取-sas7bdat-格式-sas-檔案&#34;&gt;讀取 SAS7BDAT 格式 SAS 檔案&lt;/h2&gt;
&lt;p&gt;這裡我們以 &lt;a href=&#34;https://github.com/pandas-dev/pandas/blob/master/pandas/tests/io/sas/data/airline.sas7bdat&#34;&gt;airline.sas7bdat&lt;/a&gt; 這個檔案來示範如何使用 Python 的 &lt;code&gt;sas7bdat&lt;/code&gt; 模組來讀取 SAS7BDAT 格式的 SAS 檔案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 處理 Excel、NumPy、Pandas 互相轉換教學與範例</title>
      <link>https://blog.gtwang.org/python/python-convert-excel-numpy-pandas-tutorial-examples/</link>
      <pubDate>Sun, 24 Jan 2021 20:25:02 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-convert-excel-numpy-pandas-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中處理 Excel 與 NumPy 或 Pandas 之間的資料格式轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;許多表格類型的資料都會以 Excel 格式來儲存，而在 Python 中若要處理表格類型的資料，最常用的就是 NumPy 與 Pandas 兩套函式庫，以下是處理 Excel 表格與 NumPy 與 Pandas 資料格式之間的轉換的基本範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 openpyxl 模組讀取、寫入 Excel 檔案教學與範例</title>
      <link>https://blog.gtwang.org/excel/python-openpyxl-read-write-excel-file-tutorial-examples/</link>
      <pubDate>Wed, 20 Jan 2021 16:22:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/excel/python-openpyxl-read-write-excel-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;openpyxl&lt;/code&gt; 模組讀取與寫入 Excel 的 &lt;code&gt;*.xlsx&lt;/code&gt; 檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://openpyxl.readthedocs.io/en/stable/&#34;&gt;openpyxl&lt;/a&gt; 模組可用來讀取或寫入 Office Open XML 格式的 Excel 檔案，支援的檔案類型有 &lt;code&gt;xlsx&lt;/code&gt;、&lt;code&gt;xlsm&lt;/code&gt;、&lt;code&gt;xltx&lt;/code&gt;、&lt;code&gt;xltm&lt;/code&gt;，以下將示範如何使用 &lt;code&gt;openpyxl&lt;/code&gt; 模組來讀取並修改 Excel 檔案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 humanize 模組將數字轉為容易閱讀格式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-humanize-turning-number-into-human-readable-format-tutorial-examples/</link>
      <pubDate>Wed, 20 Jan 2021 10:25:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-humanize-turning-number-into-human-readable-format-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;humanize&lt;/code&gt; 模組，將數字轉為比較容易閱讀的格式或表示方式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://pypi.org/project/humanize/&#34;&gt;humanize 模組&lt;/a&gt;可以用來將數字轉換為一般人慣用的表達方式，以下是各種不同應用的使用範例與程式碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 以 LabelStatisticsImageFilter 套用遮罩影像計算統計量教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-labelstatisticsimagefilter-mask-label-image-calculate-statistics-tutorial-examples/</link>
      <pubDate>Fri, 15 Jan 2021 18:08:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-labelstatisticsimagefilter-mask-label-image-calculate-statistics-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;LabelStatisticsImageFilter&lt;/code&gt; 套用遮罩影像計算各種統計量，包含體積（數量）、加總、平均值、變異數、範圍等。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;建立測試影像與遮罩影像&#34;&gt;建立測試影像與遮罩影像&lt;/h2&gt;
&lt;p&gt;首先使用亂數的方式建立測試用的原始影像，並且手動建立一張測試用的遮罩影像：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK 讀取、寫入、建立影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-read-create-image-tutorial-examples/</link>
      <pubDate>Sun, 10 Jan 2021 10:47:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-read-create-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 ITK 模組讀取、寫入影像檔案，以及自行建立 ITK 影像的方法。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;itk-快速讀取寫入影像檔案&#34;&gt;ITK 快速讀取、寫入影像檔案&lt;/h2&gt;
&lt;p&gt;對於普通的影像檔案，可以使用 ITK 模組提供的 &lt;code&gt;imread&lt;/code&gt; 函數來快速載入，其呼叫之後會立即執行載入檔案的動作，直接傳回影像內容：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 random 模組產生隨機亂數教學與範例</title>
      <link>https://blog.gtwang.org/python/python-generate-random-numbers-tutorial-examples/</link>
      <pubDate>Sat, 09 Jan 2021 17:20:29 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-generate-random-numbers-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 內建的 &lt;code&gt;random&lt;/code&gt; 模組產生各種亂數，以及進行隨機抽樣或排序等。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 內建的 &lt;a href=&#34;https://docs.python.org/3/library/random.html&#34;&gt;random 模組&lt;/a&gt;可以用來產生隨機亂數，以下是各種亂數的產生方式與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 NumPy 的 unique 函數篩選陣列不重複元素教學與範例</title>
      <link>https://blog.gtwang.org/python/python-numpy-unique-function-tutorial-examples/</link>
      <pubDate>Fri, 08 Jan 2021 20:28:42 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-numpy-unique-function-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 NumPy 模組的 &lt;code&gt;unique&lt;/code&gt; 函數列出陣列中所有不重複的元素，並統計每個元素出現的次數。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;列出不重複元素&#34;&gt;列出不重複元素&lt;/h2&gt;
&lt;p&gt;在 Python 中我們可以使用 &lt;a href=&#34;https://numpy.org/doc/stable/reference/generated/numpy.unique.html&#34;&gt;numpy 模組的 unique 函數&lt;/a&gt;列出串列（list）中所有不重複的元素：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 計算 3D 二元遮罩影像物件數量與體積</title>
      <link>https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/</link>
      <pubDate>Thu, 07 Jan 2021 19:01:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 函式庫計算 3D 二元遮罩影像中的物件數量與體積。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取原始影像&#34;&gt;讀取原始影像&lt;/h2&gt;
&lt;p&gt;載入原始的 3D 細胞影像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itkwidgets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 載入影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3d_monolayer_xy1_ch2.tif&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;itkwidgets&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;原始影像&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/itk-count-objects-from-3d-binary-mask-image-tutorial-examples/itk-count-objects-from-3d-binary-mask-image-tutorial-examples-20210107-01.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;這裡所使用的 3D 細胞影像可以從 &lt;a href=&#34;https://github.com/CellProfiler/tutorials/tree/master/3d_monolayer&#34;&gt;CellProfiler 的 GitHub 網站&lt;/a&gt;上取得。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 計算 2D 二元遮罩影像物件數量與統計值</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-count-objects-from-2d-binary-mask-image-tutorial-examples/</link>
      <pubDate>Thu, 07 Jan 2021 09:59:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-count-objects-from-2d-binary-mask-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 的 &lt;code&gt;ConnectedComponent&lt;/code&gt; 取出二元遮罩影像中的物件，計算物件數量與統計值。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;我們希望透過影像分割（segmentation）之後的遮罩影像（mask image），自動計算圖片中的細胞數量（或是各種不相連物件的數量）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例</title>
      <link>https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/</link>
      <pubDate>Wed, 06 Jan 2021 20:16:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 VTK 的 &lt;code&gt;vtkDiscreteMarchingCubes&lt;/code&gt; 將二元遮罩影像轉為 Mesh 網格，並進行平滑化處理。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/&#34;&gt;ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/&#34;&gt;ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jupyter 以 itkwidgets 比較兩個影像差異教學與範例</title>
      <link>https://blog.gtwang.org/python/jupyter-itkwidgets-compare-two-images-tutorial-examples/</link>
      <pubDate>Wed, 06 Jan 2021 09:43:40 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/jupyter-itkwidgets-compare-two-images-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Jupyter 環境中使用 &lt;code&gt;itkwidgets&lt;/code&gt; 的棋盤式與並列式影像比較圖，比較兩張 3D 影像的差異。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;棋盤式影像比較圖&#34;&gt;棋盤式影像比較圖&lt;/h2&gt;
&lt;p&gt;首先引入 &lt;code&gt;itk&lt;/code&gt; 與 &lt;a href=&#34;https://github.com/InsightSoftwareConsortium/itkwidgets/&#34;&gt;itkwidgets&lt;/a&gt; 模組，並以 &lt;code&gt;itk&lt;/code&gt; 的 &lt;code&gt;imread&lt;/code&gt; 讀取影像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itkwidgets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 以 ITK 讀取兩張影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;brainweb165a10f17.mha&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;brainweb1e1a10f20.mha&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;itkwidgets&lt;/code&gt; 的 &lt;code&gt;checkerboard&lt;/code&gt; 函數可以繪製棋盤式的影像比較圖，其中的 &lt;code&gt;pattern&lt;/code&gt; 參數可以用來調整格子的數量，這個數量也可以在互動式的操作介面上調整：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 位元組序列 bytes 使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-bytes-function-usage-tutorial-examples/</link>
      <pubDate>Tue, 15 Dec 2020 19:53:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-bytes-function-usage-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹 Python 的位元組（bytes）函數的使用方式，並提供幾種常用的範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的位元組（bytes）物件就是一串不可修改的序列，每個元素值都介於 &lt;code&gt;0&lt;/code&gt; 到 &lt;code&gt;255&lt;/code&gt;，若要將其他的物件轉換為位元組物件，可以使用 &lt;code&gt;bytes&lt;/code&gt; 函數，以下是 &lt;code&gt;bytes&lt;/code&gt; 函數的使用方式與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 VTK 讀取 DICOM 影像教學與範例</title>
      <link>https://blog.gtwang.org/programming/python-vtk-read-dicom-image-series-tutorial-examples/</link>
      <pubDate>Sun, 29 Nov 2020 17:39:05 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/python-vtk-read-dicom-image-series-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 VTK 函式庫讀取 DICOM 影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;vtkdicomimagereader-讀取單一檔案-dicom-影像&#34;&gt;&lt;code&gt;vtkDICOMImageReader&lt;/code&gt; 讀取單一檔案 DICOM 影像&lt;/h2&gt;
&lt;p&gt;若要以 VTK 讀取單一檔案的 DICOM 影像，可以使用 &lt;code&gt;vtkDICOMImageReader&lt;/code&gt; 並指定檔案位置即可：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;vtk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立 vtkDICOMImageReader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicomReader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vtk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vtkDICOMImageReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 指定 DICOM 檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicomReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;myfile.dcm&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讀取 DICOM 影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicomReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得 DICOM 影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dicomReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 顯示影像資訊&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Scalar Type:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetScalarTypeAsString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Origin:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOrigin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Extend:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetExtent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Spacing:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetSpacing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;vtkdicomimagereader-讀取-dicom-影像序列&#34;&gt;&lt;code&gt;vtkDICOMImageReader&lt;/code&gt; 讀取 DICOM 影像序列&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;vtkDICOMImageReader&lt;/code&gt; 亦可用於讀取 DICOM 影像序列，只要指定 DICOM 序列檔案的所在目錄即可：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 數獨產生題目、自動解題程式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-sudoku-solver-backtracking-tutorial-examples/</link>
      <pubDate>Sat, 28 Nov 2020 17:06:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-sudoku-solver-backtracking-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 產生數獨題目，並以程式自動解題，找出數獨答案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;產生數獨題目&#34;&gt;產生數獨題目&lt;/h2&gt;
&lt;p&gt;這是產生數獨題目的 Python 函數，他會產生一個 9x9 的矩陣，其中的 &lt;code&gt;0&lt;/code&gt; 代表尚未填入數字的空格：&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 IntensityWindowingImageFilter 轉換影像數值範圍教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/</link>
      <pubDate>Fri, 27 Nov 2020 09:59:27 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 對影像的像素值進行線性轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 的作用跟 &lt;code&gt;RescaleIntensityImageFilter&lt;/code&gt; 類似，差異在於 &lt;code&gt;IntensityWindowingImageFilter&lt;/code&gt; 可以自行指定窗函數的數值區間。&lt;/p&gt;
&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/&#34;&gt;SimpleITK 使用 RescaleIntensityImageFilter 轉換影像數值範圍教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python NumPy 陣列與 VTK 影像轉換教學與範例</title>
      <link>https://blog.gtwang.org/python/python-convert-between-numpy-array-vtk-image-tutorial-examples/</link>
      <pubDate>Wed, 25 Nov 2020 19:03:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-convert-between-numpy-array-vtk-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中處理 NumPy 與 VTK 兩種影像格式的互相轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-convert-between-numpy-simpleitk-and-itk-image-tutorial-example/&#34;&gt;Python 處理 NumPy、SimpleITK 與 ITK 影像互相轉換教學與範例&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;numpy-陣列轉為-vtk-影像&#34;&gt;NumPy 陣列轉為 VTK 影像&lt;/h2&gt;
&lt;p&gt;以下是在 Python 中將普通的 NumPy 陣列轉為 VTK 影像的範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Matplotlib 繪製 3D 資料圖形教學與範例</title>
      <link>https://blog.gtwang.org/python/python-matplotlib-three-dimensional-plotting-tutorial-examples/</link>
      <pubDate>Tue, 24 Nov 2020 15:29:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-matplotlib-three-dimensional-plotting-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;matplotlib&lt;/code&gt; 的 &lt;code&gt;mplot3d&lt;/code&gt; 工具組繪製各種 3D 圖形。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;jupyter-環境設定&#34;&gt;Jupyter 環境設定&lt;/h2&gt;
&lt;p&gt;若在 Jupyter 或 JupyterLab 環境中，除了安裝好 &lt;code&gt;matplotlib&lt;/code&gt; 模組之外，建議也安裝 &lt;a href=&#34;https://github.com/matplotlib/ipympl&#34;&gt;ipympl&lt;/a&gt;，可讓 Jupyter 在網頁中呈現互動式的圖形，對於分析 3D 資料非常有用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 標準輸入 stdin、標準錯誤 stderr 使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-stdin-stderr-tutorial-examples/</link>
      <pubDate>Mon, 23 Nov 2020 19:44:28 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-stdin-stderr-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中從標準輸入（standard input）讀取資料，以及透過標準錯誤（standard error）輸出錯誤訊息。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 讀取、寫入 XML 格式檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-read-write-xml-format-file-tutorial-examples/</link>
      <pubDate>Mon, 23 Nov 2020 08:40:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-read-write-xml-format-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 xml.etree.ElementTree 模組來讀取與寫入 XML 格式的資料與檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在 Python 中如果需要讀取 XML 檔案，或是將資料寫入 XML 檔案中，可以使用 &lt;a href=&#34;https://docs.python.org/3/library/xml.etree.elementtree.html&#34;&gt;xml.etree.ElementTree&lt;/a&gt; 模組來處理，以下是此模組的使用方式與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyVista 高階 VTK 繪圖工具安裝教學與範例</title>
      <link>https://blog.gtwang.org/python/pyvista-vtk-high-level-api-tutorial-examples/</link>
      <pubDate>Thu, 19 Nov 2020 20:18:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/pyvista-vtk-high-level-api-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 PyVista 高階 VTK 繪圖工具繪製各種 3D 資料圖形，適合用於簡報與論文。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;VTK 是一套功能強大的繪圖工具，而在 Python 中亦可直接使用 VTK 進行各種圖形的繪製，但是 Python 的 VTK 使用方式幾乎跟 C++ 版本相同，在開發上需要撰寫大量的程式碼，而 &lt;a href=&#34;https://www.pyvista.org/&#34;&gt;PyVista&lt;/a&gt; 則是以 VTK 為基礎所開發的 API，讓使用者可以更方便使用 VTK 進行繪圖。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python matplotlib xkcd 手繪卡通圖模式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-matplotlib-xkcd-sketch-style-drawing-mode-tutorial-examples/</link>
      <pubDate>Sat, 14 Nov 2020 20:43:01 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-matplotlib-xkcd-sketch-style-drawing-mode-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;matplotlib&lt;/code&gt; 的 &lt;code&gt;xkcd&lt;/code&gt; 模式，繪製手繪卡通圖風格的插圖。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;手繪卡通圖模式&#34;&gt;手繪卡通圖模式&lt;/h2&gt;
&lt;p&gt;若要使用 &lt;code&gt;matplotlib&lt;/code&gt; 的 &lt;code&gt;xkcd&lt;/code&gt; 模式繪製插圖樣式圖形，建議先安裝 Humor Sans 這個卡通風格的字型：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 3D 剛性影像對準 Rigid Registration 置中初始化教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-3d-rigid-registration-center-initialization-tutorial-examples/</link>
      <pubDate>Wed, 11 Nov 2020 14:13:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-3d-rigid-registration-center-initialization-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 &lt;code&gt;VersorRigid3DTransform&lt;/code&gt; 剛性影像轉換搭配 &lt;code&gt;CenteredTransformInitializer&lt;/code&gt; 置中初始化對影像進行對準。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;影像對準&#34;&gt;影像對準&lt;/h2&gt;
&lt;p&gt;首先定義各種資料與物件的型別。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 定義資料型別&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;TransformType&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;VersorRigid3DTransform&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;OptimizerType&lt;/span&gt;    &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RegularStepGradientDescentOptimizerv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;RegistrationType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageRegistrationMethodv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                 &lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;MetricType&lt;/span&gt;       &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MeanSquaresImageToImageMetricv4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FixedImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                       &lt;span class=&#34;n&#34;&gt;MovingImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立影像 reader，並指定影像來源檔案：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 SciPy 讀取 WAV 檔案繪製波形圖、時頻譜圖教學與範例</title>
      <link>https://blog.gtwang.org/python/python-scipy-read-wav-file-plot-waveform-spectrum-spectrogram-tutorial-examples/</link>
      <pubDate>Tue, 10 Nov 2020 07:33:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-scipy-read-wav-file-plot-waveform-spectrum-spectrogram-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;scipy&lt;/code&gt; 與 &lt;code&gt;matplotlib&lt;/code&gt; 模組讀取 wav 聲音檔案，並繪製波形圖（waveform）、頻譜圖（spectrum）與時頻譜圖（spectrogram）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 ctypes 載入 DLL、SO 動態連結函式庫教學與範例</title>
      <link>https://blog.gtwang.org/python/python-loading-dll-using-ctypes-tutorial-examples/</link>
      <pubDate>Sun, 08 Nov 2020 19:19:39 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-loading-dll-using-ctypes-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;ctypes&lt;/code&gt; 載入 DLL 與 SO 動態連結函式庫，搭配 C/C++ 語言進行高速計算。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://docs.python.org/3/library/ctypes.html&#34;&gt;&lt;code&gt;ctypes&lt;/code&gt; 模組&lt;/a&gt;可以用來呼叫外部的函式庫，提供相容於 C 語言的資料型別，開發者可以透過這個模組直接呼叫 DLL 檔案（Windows 平台）或 SO 檔案（macOS 或 Linux 平台）中的函數。以下分別介紹 Windows 平台建立與使用 DLL 檔案、macOS 與 Linux 平台建立與使用 SO 檔案的步驟。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 RescaleIntensityImageFilter 轉換影像數值範圍教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/</link>
      <pubDate>Sun, 08 Nov 2020 15:01:30 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleitk-rescaleintensityimagefilter-intensity-value-linear-transformation-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;RescaleIntensityImageFilter&lt;/code&gt; 對影像的像素值進行線性轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/simpleitk-intensitywindowingimagefilter-intensity-value-linear-transformation-tutorial-examples/&#34;&gt;SimpleITK 使用 IntensityWindowingImageFilter 轉換影像數值範圍教學與範例&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先從 DICOM 影像序列讀取 3D 影像資料：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;SimpleITK&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sitk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DICOM 影像序列檔案所在目錄&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/mnt/data/ct_image&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立影像序列 Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sitk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageSeriesReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得所有 DICOM 影像的 Series IDs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;series_ids&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetGDCMSeriesIDs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得指定 Series ID 的 DICOM 影像序列檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;dicom_filenames&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetGDCMSeriesFileNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_folder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;series_ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 DICOM 影像序列檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dicom_filenames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 實際讀取影像內容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;確認影像的大小：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 Streamlit 建立網頁資料分析應用程式教學與範例</title>
      <link>https://blog.gtwang.org/python/python-streamlit-build-web-data-analysis-app-tutorial-examples/</link>
      <pubDate>Fri, 06 Nov 2020 15:11:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-streamlit-build-web-data-analysis-app-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 Streamlit 快速建立互動式的網頁資料分析應用程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.streamlit.io/&#34;&gt;Streamlit&lt;/a&gt; 是一個 Python 的模組，可以快速將單純的資料分析 Python 程式包裝成一個互動式網頁應用程式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/</link>
      <pubDate>Wed, 04 Nov 2020 19:49:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;BinaryMask3DMeshSource&lt;/code&gt; 將二元影像（binary image）轉為網格（mesh）構成的 surface。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/&#34;&gt;ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/&#34;&gt;VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jupyter 透過自訂 Files Handler 停用檔案下載功能教學與範例</title>
      <link>https://blog.gtwang.org/python/jupyter-disable-download-function-using-files-handler-tutorial-examples/</link>
      <pubDate>Tue, 03 Nov 2020 20:50:56 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/jupyter-disable-download-function-using-files-handler-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何透過自訂檔案處理函數，停用 Jupyter 的檔案下載功能，禁止使用者下載檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;禁止下載檔案-files-handler&#34;&gt;禁止下載檔案 Files Handler&lt;/h2&gt;
&lt;p&gt;建立一個 Python 指令稿 &lt;code&gt;forbid_files_handler.py&lt;/code&gt;，內容如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 查詢、變更工作目錄教學與範例</title>
      <link>https://blog.gtwang.org/python/python-get-and-change-current-working-directory-tutorial/</link>
      <pubDate>Tue, 03 Nov 2020 18:15:40 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-get-and-change-current-working-directory-tutorial/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;os&lt;/code&gt; 模組查詢與更改目前的工作目錄。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在 Python 中若要查詢或變更目前的工作目錄（current working directory），可以透過內建的 &lt;code&gt;os&lt;/code&gt; 模組來處理，以下是操作方法與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 擷取螢幕畫面 pyscreenshot 模組使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pyscreenshot-module-screenshot-tutorial-examples/</link>
      <pubDate>Tue, 03 Nov 2020 17:59:35 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pyscreenshot-module-screenshot-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;pyscreenshot&lt;/code&gt; 模組擷取螢幕畫面快照，適用於 Windows、Mac OS X 與 Linux 系統。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-pyscreenshot-模組&#34;&gt;安裝 &lt;code&gt;pyscreenshot&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ponty/pyscreenshot&#34;&gt;pyscreenshot&lt;/a&gt; 是一個專門用來擷取螢幕畫面的 Python 模組，並將圖片轉為 PIL 或 Pillow 影像，可以做為 &lt;a href=&#34;https://pillow.readthedocs.io/en/latest/reference/ImageGrab.html&#34;&gt;ImageGrab&lt;/a&gt; 模組的替代方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 2D 影像對準 Hello World 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-2d-image-registration-hello-world-tutorial-examples/</link>
      <pubDate>Fri, 30 Oct 2020 20:13:06 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-2d-image-registration-hello-world-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 函式庫的 v4 影像對準框架處理二維影像的對準，並提供 hello world 範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;itkv4-影像對準框架&#34;&gt;ITKv4 影像對準框架&lt;/h2&gt;
&lt;p&gt;ITKv4 影像對準框架跟上一版比較起來更為彈性，主要差異就是對準過程都在新的虛擬影像（virtual image）中進行，固定影像（fixed image）與調動影像（moving image）都透過轉換（transforms）與內插（interpolators）在虛擬影像空間以 metric 衡量配適程度，然後將結果交給 optimizer 更新轉換參數，重複這個過程直到結果收斂。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 PyCryptodome 實作 RSA 非對稱式加密方法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pycryptodome-rsa-asymmetric-encryption-tutorial-examples/</link>
      <pubDate>Thu, 29 Oct 2020 15:28:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pycryptodome-rsa-asymmetric-encryption-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;PyCryptodome&lt;/code&gt; 模組產生 RSA 金鑰，並對資料進行加密與解密。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;code&gt;PyCryptodome&lt;/code&gt; 模組提供了各種加密演算法工具，其安裝方式請參考另外一篇 &lt;a href=&#34;https://blog.gtwang.org/python/python-pycryptodome-aes-symmetric-encryption-tutorial-examples/&#34;&gt;PyCryptodome 實作 AES 對稱式加密方法教學&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 PyCryptodome 實作 AES 對稱式加密方法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pycryptodome-aes-symmetric-encryption-tutorial-examples/</link>
      <pubDate>Thu, 29 Oct 2020 12:05:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pycryptodome-aes-symmetric-encryption-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;PyCryptodome&lt;/code&gt; 模組以 AES 對稱式加密方法對資料進行加密與解密。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86&#34;&gt;AES 進階加密標準&lt;/a&gt;由美國國家標準與技術研究院（NIST）於 2001 年 11 月 26 日發布於 FIPS PUB 197，並在 2002 年 5 月 26 日成為有效的標準，是目前主流的對稱金鑰加密演算法之一。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 ScalarImageKmeansImageFilter 進行 K-Means 分群教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/</link>
      <pubDate>Tue, 27 Oct 2020 10:20:41 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;ScalarImageKmeansImageFilter&lt;/code&gt; 以 K-means 分群演算法，將影像像素值進行分群（clustering），產生標註（label）影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;原始影像&#34;&gt;原始影像&lt;/h2&gt;
&lt;p&gt;載入原始影像。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像像素資料類型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PixelType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像維度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Dimension&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 影像類型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ImageType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PixelType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dimension&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立影像 Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ReaderType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageFileReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ImageType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ReaderType&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;fixed.mhd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 讀取 Fixed 影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 顯示原始影像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imshow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetArrayViewFromImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cmap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;gray&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;show&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;原始影像&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples/itk-scalarimagekmeansimagefilter-k-means-clustering-tutorial-examples-20201027-01.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 線性仿射影像對準 Affine Registration 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-linear-affine-registration-tutorial-examples/</link>
      <pubDate>Mon, 19 Oct 2020 19:07:20 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-linear-affine-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 進行影像的線性仿射影像對準（affine registration）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;準備測試用影像&#34;&gt;準備測試用影像&lt;/h2&gt;
&lt;p&gt;這裡我們使用一張影像作為基準影像（fixed image），以 &lt;code&gt;AffineTransform&lt;/code&gt; 線性仿射轉換套用至基準影像上，產生一張調動影像（moving image）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 以 Observer 監看影像對準過程教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-registration-observer-metric-plot-tutorial-examples/</link>
      <pubDate>Wed, 14 Oct 2020 16:07:58 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-registration-observer-metric-plot-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 observer 監看影像對準過程，繪製及時的距離變化圖，確認收斂情況。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;影像對準（image registration）的計算過程需要確認結果是否正確收斂到最佳解，在 ITK 中我們可以透過設定 observer 的方式，取出每次疊代產生的 metric 數值，並及時繪製出圖形，方便開發者調整參數。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python ITK 影像平移線性對準 Translation Registration 教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-linear-translation-registration-tutorial-examples/</link>
      <pubDate>Wed, 14 Oct 2020 12:08:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-linear-translation-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 進行 2D 影像平移線性對準（translation registration）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;準備測試用影像&#34;&gt;準備測試用影像&lt;/h2&gt;
&lt;p&gt;這裡我們使用一張影像作為基準影像（fixed image），以 &lt;code&gt;TranslationTransform&lt;/code&gt; 平移轉換套用至基準影像上，產生一張調動影像（moving image）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK SimpleFilterWatcher 監看 Filter 執行狀態教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-simplefilterwatcher-watch-filter-tutorial-examples/</link>
      <pubDate>Tue, 13 Oct 2020 06:58:42 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-simplefilterwatcher-watch-filter-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;SimpleFilterWatcher&lt;/code&gt; 輸出指定 filter 產生的管線事件（pieline events）詳細資訊。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在開發 ITK 應用程式時，如果需要觀察管線內部各個 filter 的運作狀況，可以在程式中加入 &lt;a href=&#34;https://itk.org/Doxygen/html/classitk_1_1SimpleFilterWatcher.html#a7a09c53c58550eb0b926bb08679fb43c&#34;&gt;SimpleFilterWatcher&lt;/a&gt;，把指定 filter 的所產生的所有管線事件輸出至標準輸出（standard output）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK ResampleImageFilter 影像座標轉換、重新取樣教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-resampleimagefilter-image-transform-tutorial-examples/</link>
      <pubDate>Sun, 11 Oct 2020 18:56:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-resampleimagefilter-image-transform-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;ResampleImageFilter&lt;/code&gt; 進行影像的各種座標轉換以及重新取樣。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://itk.org/Doxygen/html/classitk_1_1ResampleImageFilter.html&#34;&gt;ITK 的 ResampleImageFilter&lt;/a&gt; 可以用來套用 ITK 的各種轉換（transform），並且以指定的內插方法（interpolator）進行影像的重新取樣（resample），得到新座標系統下的影像。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK ImageFileWriter 串流分批寫入大型檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-imagefilewriter-streaming-tutorial-examples/</link>
      <pubDate>Sat, 10 Oct 2020 17:02:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-imagefilewriter-streaming-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;ImageFileWriter&lt;/code&gt; 本身的串流功能，分批處理大型檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在使用 ITK 進行各種處理流程時，除了使用 &lt;a href=&#34;https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/&#34;&gt;StreamingImageFilter 分割資料建立串流&lt;/a&gt;之外，亦可在使用 &lt;code&gt;ImageFileWriter&lt;/code&gt; 寫入檔案的時候，以 &lt;code&gt;SetNumberOfStreamDivisions&lt;/code&gt; 設定串流分割參數，讓整條管線都以串流的方式處理，以下是一個轉換影像類型的範例：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 ITK StreamingImageFilter 串流分批處理大型影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/</link>
      <pubDate>Sat, 10 Oct 2020 09:39:17 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-itk-streamingimagefilter-divide-large-image-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 的 &lt;code&gt;StreamingImageFilter&lt;/code&gt; 將大型影像自動分割成小區域，以串流分批處理。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在使用 ITK 處理影像資料時，若遇到影像過大、記憶體不足時，可以使用串流（streaming）的方式將資料切割成小區域分批處理，以節省記憶體。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 MaskImageFilter 與 MaskNegatedImageFilter 套用遮罩影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-mask-negated-image-filter/</link>
      <pubDate>Sat, 26 Sep 2020 15:28:38 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-mask-negated-image-filter/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;MaskImageFilter&lt;/code&gt; 與 &lt;code&gt;MaskNegatedImageFilter&lt;/code&gt; 將遮罩套用至影像中，取出原始影像中對應遮罩標示的區域。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;maskimagefilter-套用遮罩&#34;&gt;&lt;code&gt;MaskImageFilter&lt;/code&gt; 套用遮罩&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://simpleitk.org/doxygen/latest/html/classitk_1_1simple_1_1MaskImageFilter.html&#34;&gt;MaskImageFilter&lt;/a&gt; 可以將影像套用指定遮罩，將指定遮罩值的區域篩除。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/</link>
      <pubDate>Sat, 26 Sep 2020 08:33:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-trianglemeshtobinaryimagefilter-convert-surface-to-binary-volume-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 &lt;code&gt;TriangleMeshToBinaryImageFilter&lt;/code&gt; 將網格（mesh）包圍的範圍轉為二元影像（binary image）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/programming/itk-binarymask3dmeshsource-convert-binary-volume-to-surface-tutorial-examples/&#34;&gt;ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/vtk-smoothdiscretemarchingcubes-convert-binary-volume-to-mesh-surface-tutorial-examples/&#34;&gt;VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 處理 NumPy、SimpleITK 與 ITK 影像互相轉換教學與範例</title>
      <link>https://blog.gtwang.org/python/python-convert-between-numpy-simpleitk-and-itk-image-tutorial-example/</link>
      <pubDate>Thu, 24 Sep 2020 19:53:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-convert-between-numpy-simpleitk-and-itk-image-tutorial-example/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中處理 NumPy、SimpleITK 與 ITK 三種影像格式的互相轉換。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;simpleitk-轉換為-numpy-與-itk&#34;&gt;SimpleITK 轉換為 NumPy 與 ITK&lt;/h2&gt;
&lt;p&gt;若要將 SimpleITK 格式轉換為單純的 NumPy 陣列，可以使用 &lt;code&gt;GetArrayFromImage&lt;/code&gt; 或是 &lt;code&gt;GetArrayViewFromImage&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 LabelOverlay 套疊標註影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeloverlay-overlay-label-image/</link>
      <pubDate>Wed, 23 Sep 2020 19:05:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeloverlay-overlay-label-image/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;LabelOverlay&lt;/code&gt; 將標註影像（label image）自動套用色彩後，疊加在原始影像上。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在檢視原始影像與標註影像的對應時，除了&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/&#34;&gt;用 LabelToRGBImageFilter 將標註影像轉為 RGB 彩色影像&lt;/a&gt;之外，也可以利用 &lt;code&gt;LabelOverlay&lt;/code&gt; 自動將標註影像轉為 RGB 彩色影像之後，直接疊在原始影像上面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleITK 使用 LabelToRGBImageFilter 將標註影像轉為 RGB 彩色影像教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/</link>
      <pubDate>Wed, 23 Sep 2020 09:57:19 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-labeltorgbimagefilter-apply-colormap-to-label-image/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleITK 的 &lt;code&gt;LabelToRGBImageFilter&lt;/code&gt; 將標註影像（label image）轉換為 RGB 彩色影像，方便顯示於螢幕上。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在標註影像的區域時，通常會將標註資訊儲存於另外一個標註檔案（label image）之中，跟原始影像搭配使用，以下是 &lt;a href=&#34;https://atlas.brain-map.org/&#34;&gt;Allen Mouse Brain CCFv3&lt;/a&gt; 平均腦與標註影像的範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ITK 使用 MeshFileReader 讀取 OBJ 檔案教學與範例</title>
      <link>https://blog.gtwang.org/programming/itk-meshfilereader-read-obj-file-tutorial-examples/</link>
      <pubDate>Mon, 07 Sep 2020 10:39:40 +0800</pubDate>
      <guid>https://blog.gtwang.org/programming/itk-meshfilereader-read-obj-file-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 ITK 的 MeshFileReader 讀取 OBJ 網格檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;python-讀取-obj-檔案&#34;&gt;Python 讀取 OBJ 檔案&lt;/h2&gt;
&lt;p&gt;若在 Python 中，可以使用 &lt;code&gt;itk&lt;/code&gt; 模組的 &lt;code&gt;MeshFileReader&lt;/code&gt; 來讀取 OBJ 檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;itk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 Mesh 資料型態（浮點數、維度 3）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mesh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立 Mesh Reader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MeshFileReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;meshType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 設定 MeshIO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshIO&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;itk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OBJMeshIO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;New&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetMeshIO&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;meshIO&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 指定 OBJ 檔案名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetFileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;my_mesh.obj&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 實際讀取 OBJ 檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取得 Mesh 內容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;mesh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;meshReader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetOutput&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;c-讀取-obj-檔案&#34;&gt;C++ 讀取 OBJ 檔案&lt;/h2&gt;
&lt;p&gt;若要在 C++ 讀取 OBJ 檔案，可以使用 &lt;code&gt;itk::MeshFileReader&lt;/code&gt;：&lt;/p&gt;</description>
    </item>
    <item>
      <title>itkwidgets 互動式 Jupyter 影像視覺化工具使用教學與範例</title>
      <link>https://blog.gtwang.org/python/itkwidgets-interactive-jupyter-image-mesh-visualization-widgets/</link>
      <pubDate>Fri, 07 Aug 2020 09:30:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itkwidgets-interactive-jupyter-image-mesh-visualization-widgets/</guid>
      <description>&lt;p&gt;介紹如何在 Jupyter 環境中使用 &lt;code&gt;itkwidgets&lt;/code&gt; 模組，互動式顯示影像或網格等 3D 資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/InsightSoftwareConsortium/itkwidgets&#34;&gt;&lt;code&gt;itkwidgets&lt;/code&gt;&lt;/a&gt; 是從 &lt;a href=&#34;https://kitware.github.io/itk-vtk-viewer/index.html&#34;&gt;itk-vtk-viewer&lt;/a&gt; 所衍生出來的 Python 模組，可以讓使用者在 Jupyter 環境之下顯示各種影像分析相關的資料。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 SimpleElastix 處理 3D 影像對準教學與範例</title>
      <link>https://blog.gtwang.org/python/python-simpleelastix-3d-image-registration-tutorial-examples/</link>
      <pubDate>Mon, 20 Jul 2020 14:17:08 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleelastix-3d-image-registration-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 與 SimpleElastix 處理 3D 影像對準，並顯示處理結果。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;allen-mouse-brain-common-coordinate-framework&#34;&gt;Allen Mouse Brain Common Coordinate Framework&lt;/h2&gt;
&lt;p&gt;第三代的 &lt;a href=&#34;https://atlas.brain-map.org/&#34;&gt;Allen Mouse Brain Common Coordinate Framework&lt;/a&gt;（簡稱 CCFv3）提供了高解析度的老鼠腦圖譜，這裡我們使用 CCFv3 的腦影像作為基準，將自己的腦影像與 CCFv3 的腦影像進行影像對準。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 處理 TIFF 三維立體影像降解析度教學與範例</title>
      <link>https://blog.gtwang.org/python/python-tiff-volume-image-downsample-tutorial-examples/</link>
      <pubDate>Thu, 09 Jul 2020 16:04:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-tiff-volume-image-downsample-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 ITK 模組處理 TIFF 檔案序列組成的大型影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;標準處理方式&#34;&gt;標準處理方式&lt;/h2&gt;
&lt;p&gt;如果伺服器的記憶體夠大，足夠容納整個影像的話，可以直接一次將整個影像讀取至記憶體，進行各種處理後，再轉存至輸出檔案中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 yt 模組分析、顯示三維立體資料教學與範例</title>
      <link>https://blog.gtwang.org/python/python-yt-module-for-analyzing-visualizing-volumetric-data/</link>
      <pubDate>Wed, 27 May 2020 08:01:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-yt-module-for-analyzing-visualizing-volumetric-data/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 yt 模組，分析與顯示三維立體資料，並繪製立體渲染圖形。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://yt-project.org/&#34;&gt;yt&lt;/a&gt; 是一套 Python 的三維立體資料分析與顯示模組，主要用於物理與工程相關領域，以下是簡單的安裝使用範例，詳細的操作說明可參考 &lt;a href=&#34;https://yt-project.org/&#34;&gt;yt 的官方網站&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：讀取 DICOM 影像序列檔案</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/</link>
      <pubDate>Mon, 25 May 2020 11:07:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 SimpleITK 模組讀取 DICOM 影像序列檔案，查看後設資料（metadata）、轉存為其他格式的三維影像檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;這裡我們使用 &lt;a href=&#34;https://www.dicomlibrary.com/?manage=1b9baeb16d2aeba13bed71045df1bc65&#34;&gt;DICOM Library 所提供的 CT 影像&lt;/a&gt;作為示範，除此之外 &lt;a href=&#34;https://www.theobjects.com/dragonfly/learn-sample-datasets.html&#34;&gt;ORS 的網站&lt;/a&gt;上面也有提供許多可用來測試的影像檔案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：合併純量影像製作彩色影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-combine-scalar-images-create-color-image/</link>
      <pubDate>Thu, 23 Apr 2020 21:35:23 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-combine-scalar-images-create-color-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將兩張灰階影像合併成一張 RGB 彩色影像，評估兩張影像的對準狀況。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在做完影像對準（image registration）的處理之後，通常都會需要以視覺化的方式呈現兩張影像，評估對準的結果，以下是將兩張灰階影像合併為一張 RGB 彩色影像的流程示範。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SimpleElastix 影像對準工具安裝、基本使用教學與範例</title>
      <link>https://blog.gtwang.org/python/simpleelastix-medical-image-registration-library-tutorial-examples/</link>
      <pubDate>Thu, 23 Apr 2020 10:04:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/simpleelastix-medical-image-registration-library-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 SimpleElastix 影像對準（image registration）工具，以剛性、線性、非線性的方式對準影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-simpleelastix&#34;&gt;安裝 SimpleElastix&lt;/h2&gt;
&lt;p&gt;從 GitHub 下載 &lt;a href=&#34;http://simpleelastix.github.io/&#34;&gt;SimpleElastix&lt;/a&gt; 的原始碼：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下載 SimpleElastix 原始碼&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/SuperElastix/SimpleElastix
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建立編譯用目錄，在該目錄中編譯：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Extract、Crop、RegionOfInterest 擷取部分影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-extract-crop-image-regionofinterest-slice/</link>
      <pubDate>Mon, 20 Apr 2020 10:20:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-extract-crop-image-regionofinterest-slice/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將一張影像中的部分區域擷取出來，變成一張小的影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;SimpleITK 的 &lt;code&gt;Extract&lt;/code&gt; 與 &lt;code&gt;Crop&lt;/code&gt; 函數可以將一張影像中的部分區域擷取出來，儲存成一張小的影像。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Shrink 縮小影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-shrink-reduce-image-size/</link>
      <pubDate>Sun, 19 Apr 2020 06:16:09 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-shrink-reduce-image-size/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 的 &lt;code&gt;Shrink&lt;/code&gt; 函數來縮小影像。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;顯示影像切面函數&#34;&gt;顯示影像切面函數&lt;/h2&gt;
&lt;p&gt;首先定義一個用來顯示影像切面的函數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;SimpleITK&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sitk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;plt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 顯示影像切面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;myShowImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;z_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;nda&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sitk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetArrayViewFromImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;slice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nda&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;z_index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,:,:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;imshow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;slice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;plt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;show&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;原始影像&#34;&gt;原始影像&lt;/h2&gt;
&lt;p&gt;這裡我們以 &lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/&#34;&gt;Allen Mouse Brain Atlas 老鼠標準腦&lt;/a&gt;的影像為範例，先讀取原始影像，並檢查其影像大小、位置與 voxel size 資訊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Paste 貼上影像</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-paste-image-into-another-image/</link>
      <pubDate>Thu, 16 Apr 2020 20:45:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-paste-image-into-another-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 將一張影像貼在另外一張影像中。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;SimpleITK 的 &lt;code&gt;Paste&lt;/code&gt; 函數可以將一張影像貼在另外一張影像中指定的位置，將原本的影像蓋過去。&lt;/p&gt;
&lt;p&gt;在影像對準的應用中，我們可以利用這樣的方式擴展基準影像的邊界，方便進行後續的影像對準工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：Allen Mouse Brain Atlas 老鼠標準腦</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/</link>
      <pubDate>Wed, 15 Apr 2020 20:02:34 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-allen-mouse-brain-atlas/</guid>
      <description>&lt;p&gt;介紹如何在 Python 以 SimpleITK 模組讀取 Allen Mouse Brain Atlas 老鼠標準腦、繪製切面圖，並計算各種基本統計量。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取標準腦影像&#34;&gt;讀取標準腦影像&lt;/h2&gt;
&lt;p&gt;老鼠的標準腦 volume 影像可從 &lt;a href=&#34;http://help.brain-map.org/display/mousebrain/API&#34;&gt;Allen Mouse Brain Atlas 的網站&lt;/a&gt; 下載，解壓縮之後即可使用 Python 的 SimpleITK 模組來讀取：&lt;/p&gt;</description>
    </item>
    <item>
      <title>讀取 IMARIS（IMS）檔案原始影像、後設資料教學與範例</title>
      <link>https://blog.gtwang.org/linux/read-image-from-imaris-ims-file-format-tutorial-examples/</link>
      <pubDate>Tue, 14 Apr 2020 19:32:07 +0800</pubDate>
      <guid>https://blog.gtwang.org/linux/read-image-from-imaris-ims-file-format-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何從 IMS 檔案中讀取影像資料，轉換成其他的影像檔案。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://open.bitplane.com/Default.aspx?tabid=268&#34;&gt;IMARIS（IMS）&lt;/a&gt;是一種以 HDF5 格式為基礎的影像檔案格式，專門用於儲存大型的影像，在一個 IMS 影像檔案中除了原始解析度的影像之外，同時也會包含低解析度的影像資料，配合 HDF5 的 chunk 方式儲存，可加速影像的讀取與顯示速度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：讀取 DICOM 影像後設資料 Metadata</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/</link>
      <pubDate>Wed, 01 Apr 2020 08:09:51 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 SimpleITK 讀取 DICOM 影像的後設資料（metadata）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;許多的醫學影像（例如 X 光、斷層掃描、各種顯微鏡影像等）都會以 DICOM 的格式儲存，而附帶的實驗相關資訊也都會儲存在 &lt;a href=&#34;https://www.dicomlibrary.com/dicom/dicom-tags/&#34;&gt;DICOM 標準的 Tags&lt;/a&gt; 中，以下介紹如何從 DICOM 檔案中取出這些資訊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python SimpleITK 影像處理教學：基本影像讀取與檢視</title>
      <link>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-and-view-image/</link>
      <pubDate>Tue, 31 Mar 2020 14:52:15 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-simpleitk-tutorial-read-and-view-image/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 SimpleITK 這套影像處理工具，進行基本的影像讀取與檢視工作。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;blockquote class=&#34;tldr&#34;&gt;&lt;p&gt;&lt;strong&gt;相關文章：&lt;/strong&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-read-dicom-metadata/&#34;&gt;Python SimpleITK 影像處理教學：讀取 DICOM 影像後設資料 Metadata&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-simpleitk-tutorial-dicom-series-reader/&#34;&gt;Python SimpleITK 影像處理教學：讀取 DICOM 影像序列檔案&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;https://blog.gtwang.org/python/python-pydicom-read-edit-dicom-tutorial-examples/&#34;&gt;Python 使用 Pydicom 讀取、編輯 DICOM 影像檔案教學與範例&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python DICOM 影像分析預處理教學與範例</title>
      <link>https://blog.gtwang.org/python/python-dicom-image-analysis-preprocessing-tutorial-examples/</link>
      <pubDate>Sun, 29 Mar 2020 18:14:46 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-dicom-image-analysis-preprocessing-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的各種影像相關模組，進行 DICOM 影像分析的預處理（pre-processing）。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;讀取-dicom-影像檔案&#34;&gt;讀取 DICOM 影像檔案&lt;/h2&gt;
&lt;p&gt;若要讀取 DICOM 檔案，可以使用 Pydicom 模組的 &lt;code&gt;dcmread&lt;/code&gt; 函數，這裡我們使用 Pydicom 附帶的測試 DICOM 檔案作為示範。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 Pydicom 讀取、編輯 DICOM 影像檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-pydicom-read-edit-dicom-tutorial-examples/</link>
      <pubDate>Sat, 28 Mar 2020 18:48:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-pydicom-read-edit-dicom-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 Pydicom 模組，讀取與編輯 DICOM 影像檔案的內容。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 的 &lt;a href=&#34;https://pydicom.github.io/&#34;&gt;Pydicom 模組&lt;/a&gt;是一套非常完整的 DICOM 影像檔案處理工具，可以讀取、編輯或寫入 DICOM 檔案，以下是基本的使用教學與範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 以 ITK 轉換影像資料型別教學與範例</title>
      <link>https://blog.gtwang.org/python/itk-cpp-cast-mage-to-another-type-tutorial/</link>
      <pubDate>Fri, 27 Mar 2020 11:37:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/itk-cpp-cast-mage-to-another-type-tutorial/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中以 ITK 轉換影像的資料型別，將 &lt;code&gt;unsigned short&lt;/code&gt; 的灰階影像轉換為 &lt;code&gt;unsigned char&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-python-的-itk-模組&#34;&gt;安裝 Python 的 ITK 模組&lt;/h2&gt;
&lt;p&gt;透過 &lt;code&gt;pip3&lt;/code&gt; 安裝 Python 的 &lt;code&gt;itk&lt;/code&gt; 模組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安裝 Python ITK 模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install itk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;轉換影像類型&#34;&gt;轉換影像類型&lt;/h2&gt;
&lt;p&gt;以下是使用 ITK 將 &lt;code&gt;unsigned short&lt;/code&gt; 的灰階影像轉換為 &lt;code&gt;unsigned char&lt;/code&gt; 灰階影像的 Python 指令稿：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python tkinter 視窗程式設計教學：Hello World</title>
      <link>https://blog.gtwang.org/python/python-tkinter-gui-tcl-tk-interface-tutorial-examples/</link>
      <pubDate>Sun, 15 Mar 2020 18:43:55 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-tkinter-gui-tcl-tk-interface-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中使用 &lt;code&gt;tkinter&lt;/code&gt; 模組，開發具有圖形介面（GUI）的視窗程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://docs.python.org/3/library/tkinter.html&#34;&gt;tkinter&lt;/a&gt;（代表 Tk interface）是 Python 中最基本的 Tk 圖形化工具標準模組，在多數的 UNIX/Linux、Mac OS 以及 Windows 系統都可以使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 設定檔解析模組 ConfigParser 使用教學</title>
      <link>https://blog.gtwang.org/python/configparser-python-configuration-file-parser-tutorial/</link>
      <pubDate>Wed, 26 Feb 2020 07:48:36 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/configparser-python-configuration-file-parser-tutorial/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;ConfigParser&lt;/code&gt; 設定檔解析模組，讀取與寫入設定檔案中的設定值。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/INI_file&#34;&gt;INI 檔案&lt;/a&gt;（副檔名為 &lt;code&gt;.ini&lt;/code&gt;）是一種格式簡單、應用廣泛的文字設定檔格式，普遍被應用於 Windows 系統以及其他的應用程式中，而在 Python 中若要讀取或寫入 INI 檔案，可以使用 &lt;code&gt;ConfigParser&lt;/code&gt; 這個設定檔解析模組，以下是該模組的使用教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JupyterLab 整合多 Conda 環境不同版本 Python、R 語言教學</title>
      <link>https://blog.gtwang.org/linux/jupyterlab-multiple-conda-python-r-environments-tutorial/</link>
      <pubDate>Mon, 17 Feb 2020 14:13:25 +0800</pubDate>
      <guid>https://blog.gtwang.org/linux/jupyterlab-multiple-conda-python-r-environments-tutorial/</guid>
      <description>&lt;p&gt;介紹如何使用 &lt;code&gt;nb_conda_kernels&lt;/code&gt; 管理多個 Conda 環境下的 Jupyter 核心，整合多 Conda 環境下的 Python 或 R 等語言。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/Anaconda-Platform/nb_conda_kernels&#34;&gt;nb_conda_kernels&lt;/a&gt; 是一個 Jupyter 的擴充功能（extension），可以管理多個 Conda 環境下的 Jupyter 核心（kernels），整合多 Conda 環境中各種不同版本的 Python 或 R 等語言。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anaconda 建立 JupyterLab 的 Python 與 R 混合環境教學</title>
      <link>https://blog.gtwang.org/python/anaconda-jupyterlab-python-r-kernel-tutorial/</link>
      <pubDate>Sun, 16 Feb 2020 21:02:24 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/anaconda-jupyterlab-python-r-kernel-tutorial/</guid>
      <description>&lt;p&gt;介紹如何使用 Anaconda 建立 JupyterLab 整合環境，同時使用 Python 與 R 語言。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-jupyterlab-的-python-與-r-混合環境&#34;&gt;安裝 JupyterLab 的 Python 與 R 混合環境&lt;/h2&gt;
&lt;p&gt;在安裝好&lt;a href=&#34;https://blog.gtwang.org/linux/ubuntu-linux-install-anaconda-data-science-platform-tutorial/&#34;&gt;基本的 Anaconda 環境&lt;/a&gt;之後，建立一個 Python 的 conda 環境，而 Python 的版本可以自行選擇：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Linux 安裝 Anaconda 資料分析與計算環境</title>
      <link>https://blog.gtwang.org/linux/ubuntu-linux-install-anaconda-data-science-platform-tutorial/</link>
      <pubDate>Fri, 14 Feb 2020 15:32:18 +0800</pubDate>
      <guid>https://blog.gtwang.org/linux/ubuntu-linux-install-anaconda-data-science-platform-tutorial/</guid>
      <description>&lt;p&gt;介紹如何在 Ubuntu Linux 中安裝 Anaconda 資料分析與計算環境。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;下載-anaconda-安裝檔案&#34;&gt;下載 Anaconda 安裝檔案&lt;/h2&gt;
&lt;p&gt;從 &lt;a href=&#34;https://www.anaconda.com/distribution/#linux&#34;&gt;Anaconda 官方網站&lt;/a&gt;上下載安裝檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下載 Anaconda 安裝檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -O https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;計算一下 SHA-1 檢查碼：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 檢查檔案&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sha256sum Anaconda3-2019.10-Linux-x86_64.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class=&#34;output&#34;&gt;46d762284d252e51cd58a8ca6c8adc9da2eadc82c342927b2f66ed011d1d8b53  Anaconda3-2019.10-Linux-x86_64.sh&lt;/pre&gt;
&lt;p&gt;將這個 SHA-1 檢查碼的結果跟 &lt;a href=&#34;https://docs.anaconda.com/anaconda/install/hashes/Anaconda3-2019.10-Linux-x86_64.sh-hash/&#34;&gt;Anaconda 官方網站&lt;/a&gt;的檢查碼比對一下，若檢查碼相同則表示檔案沒有問題。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 集合 Set 使用方法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-set-tutorial-examples/</link>
      <pubDate>Thu, 07 Nov 2019 19:24:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-set-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的集合（set）變數儲存不重複的元素，並進行各種操作。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;建立集合&#34;&gt;建立集合&lt;/h2&gt;
&lt;p&gt;若要直接建立一個集合，可用大括號將所有元素包起來：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 建立集合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;fruits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;apple&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;orange&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;banana&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;avocado&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fruits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class=&#34;output&#34;&gt;{&#39;avocado&#39;, &#39;banana&#39;, &#39;apple&#39;, &#39;orange&#39;}&lt;/pre&gt;
&lt;p&gt;亦可使用列表（list）的資料以 &lt;code&gt;set&lt;/code&gt; 函數來建立集合，建立集合時重複的元素會被自動刪除：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 產生 UUID 通用唯一辨識碼教學與範例</title>
      <link>https://blog.gtwang.org/python/python-generate-uuid-tutorial-examples/</link>
      <pubDate>Wed, 06 Nov 2019 19:48:07 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-generate-uuid-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中產生 UUID，當成具有唯一性質的識別代碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%94%AF%E4%B8%80%E8%AF%86%E5%88%AB%E7%A0%81&#34;&gt;通用唯一辨識碼&lt;/a&gt;（Universally Unique Identifier，縮寫為 UUID）是一種 128 位元的識別碼，由於它幾乎不可能重複，所以在各種應用中常被拿來做為唯一性的識別代碼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 MySQL Connector 操作 MySQL/MariaDB 資料庫教學與範例</title>
      <link>https://blog.gtwang.org/python/python-mysql-mariadb-database-connector-tutorial-examples/</link>
      <pubDate>Tue, 29 Oct 2019 11:10:31 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-mysql-mariadb-database-connector-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 MySQL Connector 模組連接 MySQL/MariaDB 資料庫，進行查詢、新增或刪除等各種操作。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 有許多 MySQL/MariaDB 資料庫相關的模組，而最常被使用的就是 MySQL Connector 與 MySQLdb 這兩個模組，以下是 MySQL Connector 模組的使用方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python tempfile 暫存檔案、目錄產生模組使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-tempfile-generate-temporary-files-directories-tutorial-examples/</link>
      <pubDate>Mon, 30 Sep 2019 19:20:14 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-tempfile-generate-temporary-files-directories-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;tempfile&lt;/code&gt; 模組自動建立暫存檔案或目錄，存放暫時性的資料。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;建立暫存檔案&#34;&gt;建立暫存檔案&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;TemporaryFile()&lt;/code&gt; 可以用來建立暫存用的檔案，預設會以二進位的方式開啟，我們可以將暫存資料寫入檔案中，需要時再讀取出來，而在檔案關閉之後，該暫存檔就會自動被刪除。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python time 時間模組使用教學與範例</title>
      <link>https://blog.gtwang.org/python/python-time-tutorial-examples/</link>
      <pubDate>Wed, 25 Sep 2019 15:04:07 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-time-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹 Python 的 &lt;code&gt;time&lt;/code&gt; 時間模組中各函數的使用方法與範例。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;timetime-函數&#34;&gt;&lt;code&gt;time.time()&lt;/code&gt; 函數&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;time.time()&lt;/code&gt; 可以傳回從 1970/1/1 00:00:00 算起至今的秒數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 引入 time 模組&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 從 1970/1/1 00:00:00 至今的秒數&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 輸出結果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class=&#34;output&#34;&gt;1569376996.8464663&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;time.time()&lt;/code&gt; 通常是用來作為時間戳記，例如&lt;a href=&#34;https://blog.gtwang.org/python/python-measure-execution-time-tutorial-examples/&#34;&gt;測量程式執行時間&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 測量程式碼執行時間教學與範例</title>
      <link>https://blog.gtwang.org/python/python-measure-execution-time-tutorial-examples/</link>
      <pubDate>Mon, 23 Sep 2019 08:52:59 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-measure-execution-time-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;time&lt;/code&gt;、&lt;code&gt;timeit&lt;/code&gt; 與 &lt;code&gt;datetime&lt;/code&gt; 模組測量程式執行時間。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;time-模組&#34;&gt;&lt;code&gt;time&lt;/code&gt; 模組&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;time&lt;/code&gt; 是 Python 標準的時間模組，其 &lt;code&gt;time.time()&lt;/code&gt; 函數可以用來取得目前的時間戳記，藉由程式碼執行前後的時間戳記，就可以計算程式執行的時間：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python for 迴圈用法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-for-loop-tutorial-examples/</link>
      <pubDate>Thu, 19 Sep 2019 13:34:44 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-for-loop-tutorial-examples/</guid>
      <description>&lt;p&gt;各種 Python 程式語言的 &lt;code&gt;for&lt;/code&gt; 迴圈用法教學，並提供完整範例。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;for-迴圈用法&#34;&gt;&lt;code&gt;for&lt;/code&gt; 迴圈用法&lt;/h2&gt;
&lt;p&gt;Python 的 &lt;code&gt;for&lt;/code&gt; 迴圈可以用來對一連串的元素（列表或字串）逐一做處理，而它的使用方式跟其他程式語言稍有不同，Python 的 &lt;code&gt;for&lt;/code&gt; 是直接接受一個元素序列，然後逐一取出處理：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 呼叫 Excel VBA 自動化執行巨集程式教學與範例</title>
      <link>https://blog.gtwang.org/excel/python-call-execute-excel-vba-macro-tutorial-example/</link>
      <pubDate>Wed, 11 Sep 2019 08:15:32 +0800</pubDate>
      <guid>https://blog.gtwang.org/excel/python-call-execute-excel-vba-macro-tutorial-example/</guid>
      <description>&lt;p&gt;使用 Python 的 &lt;code&gt;pywin32&lt;/code&gt; 模組，串接 Excel VBA 巨集程式，自動化執行大量程式。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Python 是一種很適合用來串接各種組件，進行系統整合的程式語言，如果我們有許多 Excel 的 VBA 巨集程式，想要讓它們可以自動化執行，就可以考慮使用 Python 來處理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 安裝 Jupyter Notebook Python 程式開發教學</title>
      <link>https://blog.gtwang.org/python/windows-python-jupyter-notebook-installation-tutorial-2019/</link>
      <pubDate>Wed, 04 Sep 2019 15:25:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/windows-python-jupyter-notebook-installation-tutorial-2019/</guid>
      <description>&lt;p&gt;介紹如何在 Windows 中安裝 Jupyter Notebook Python 程式開發環境。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;span class=&#34;block-label&#34;&gt;Step 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;開啟 Windows 的「命令提示字元」，使用 &lt;code&gt;pip&lt;/code&gt; 直接安裝 Jupyter：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install jupyter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;安裝 jupyter&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/windows-python-jupyter-notebook-installation-tutorial-2019/windows-install-jupyter-tutorial-20190904-01.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;block-label&#34;&gt;Step 2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;安裝完成後，即可在命令提示字元中馬上執行以下指令啟動 Jupyter，啟動後會自動開啟瀏覽器，進入 Jupyter 環境：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 使用 Cython 加速 Python 程式執行速度教學</title>
      <link>https://blog.gtwang.org/python/windows-cython-python-optimising-static-compiler-tutorial/</link>
      <pubDate>Tue, 03 Sep 2019 17:25:26 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/windows-cython-python-optimising-static-compiler-tutorial/</guid>
      <description>&lt;p&gt;介紹如何安裝與使用 Cython，結合 Python 與 C 語言的優點，提升程式的執行速度。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-cython&#34;&gt;安裝 Cython&lt;/h2&gt;
&lt;p&gt;打開 Windows 的命令提示字元，使用 &lt;code&gt;pip&lt;/code&gt; 安裝 &lt;code&gt;cython&lt;/code&gt; 套件：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;pip 安裝 cython&#34; loading=&#34;lazy&#34; src=&#34;https://blog.gtwang.org/python/windows-cython-python-optimising-static-compiler-tutorial/windows-cython-python-optimising-static-compiler-tutorial-20190902-03.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 使用 Python &#43; Selenium 自動控制瀏覽器教學與範例</title>
      <link>https://blog.gtwang.org/python/windows-python-selenium-automation-scripts-tutorial-examples/</link>
      <pubDate>Wed, 28 Aug 2019 11:09:33 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/windows-python-selenium-automation-scripts-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Windows 環境下，使用 Python 的 Selenium 模組，撰寫自動控制瀏覽器的指令稿。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;安裝-python-環境&#34;&gt;安裝 Python 環境&lt;/h2&gt;
&lt;p&gt;在開始之前，請先確認自己的 Windows 系統中有安裝 Python 的環境，如果沒有的話，請依照 &lt;a href=&#34;https://blog.gtwang.org/python/windows-python-development-environment-installation-tutorial-2019/&#34;&gt;Windows 安裝 Python 程式開發環境的步驟&lt;/a&gt;，在自己的 Windows 系統中安裝好 Python 的程式開發環境。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 使用 pywin32 模組操控 Excel 教學與範例</title>
      <link>https://blog.gtwang.org/excel/python-control-excel-using-pywin32-tutorial/</link>
      <pubDate>Tue, 13 Aug 2019 19:00:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/excel/python-control-excel-using-pywin32-tutorial/</guid>
      <description>&lt;p&gt;介紹如何使用 Python 的 &lt;code&gt;pywin32&lt;/code&gt; 模組操控 Excel。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;如果想在 Windows 中使用 Python 程式操控 Excel，可以使用 &lt;code&gt;pywin32&lt;/code&gt; 這個 Python 模組，使用前先&lt;a href=&#34;https://blog.gtwang.org/python/python-windows-extensions-pywin32-installation/&#34;&gt;依照步驟安裝 pywin32 模組&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;新增-excel-檔案&#34;&gt;新增 Excel 檔案&lt;/h2&gt;
&lt;p&gt;以下這個範例是使用 Python 操控 Excel，新增一個 Excel 活頁簿，並將資料寫入工作表，最後存檔離開。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python List 的 sort 與 sorted 排序用法教學與範例</title>
      <link>https://blog.gtwang.org/python/python-sort-sorted-tutorial-examples/</link>
      <pubDate>Mon, 29 Jul 2019 19:08:45 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-sort-sorted-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹在 Python 中如何排序數值、文字，以及反向排序、自訂排序鍵值函數。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;基本排序&#34;&gt;基本排序&lt;/h2&gt;
&lt;p&gt;在 Python 中若要對 list 中的元素進行排序，有兩種方式，一種是使用 &lt;code&gt;sorted&lt;/code&gt;，他會對元素排序之後，傳回一個排序好的新 list，而原本的 list 則不受影響：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 的 Big5 與 UTF-8 檔案編碼轉換程式教學</title>
      <link>https://blog.gtwang.org/python/python-big5-utf8-file-encoding-convertion-tutorial/</link>
      <pubDate>Sat, 27 Jul 2019 06:36:00 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-big5-utf8-file-encoding-convertion-tutorial/</guid>
      <description>&lt;p&gt;介紹如何使用簡單的 Python 程式處理 Big5 與 UTF-8 檔案的編碼轉換問題。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;Big5 與 UTF-8 的編碼轉換是在中文資料處理上常見的問題之一，以下介紹如何使用 Python 來處理 Big5 與 UTF-8 編碼的互轉。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 寫入檔案教學與範例</title>
      <link>https://blog.gtwang.org/python/python-file-write-tutorial-examples/</link>
      <pubDate>Fri, 26 Jul 2019 09:48:03 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-file-write-tutorial-examples/</guid>
      <description>&lt;p&gt;介紹如何在 Python 中將資料寫入檔案，並提供基本範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;h2 id=&#34;寫入檔案&#34;&gt;寫入檔案&lt;/h2&gt;
&lt;p&gt;在 Python 中若要將資料寫入檔案，可使用 &lt;code&gt;open&lt;/code&gt; 開啟檔案後，以 &lt;code&gt;write&lt;/code&gt; 寫入資料，最後再以 &lt;code&gt;close&lt;/code&gt; 關閉檔案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pywin32 安裝與使用教學，Python 的 Windows 擴充功能套件</title>
      <link>https://blog.gtwang.org/python/python-windows-extensions-pywin32-installation/</link>
      <pubDate>Thu, 25 Jul 2019 14:16:02 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-windows-extensions-pywin32-installation/</guid>
      <description>&lt;p&gt;介紹如何安裝與使用 &lt;code&gt;pywin32&lt;/code&gt; 這個 Python 的 Windows 擴充功能套件。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/mhammond/pywin32&#34;&gt;pywin32&lt;/a&gt; 是一個 Python 的 Windows API 擴充功能套件，開發者可以透過它來操作 Windows 下的各種應用程式，以下是 &lt;code&gt;pywin32&lt;/code&gt; 的安裝步驟以及使用範例。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 安裝 Python 的 pip 套件管理工具教學</title>
      <link>https://blog.gtwang.org/python/windows-install-python-pip-tutorial-2019/</link>
      <pubDate>Mon, 22 Jul 2019 08:08:24 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/windows-install-python-pip-tutorial-2019/</guid>
      <description>&lt;p&gt;示範如何在 Windows 中安裝 Python 的 &lt;code&gt;pip&lt;/code&gt; 套件管理工具。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip&lt;/code&gt; 是 Python 專用的套件安裝工具，幾乎任何套件只要知道名稱，即可使用 &lt;code&gt;pip&lt;/code&gt; 的一行指令，自動下載與安裝，非常方便又好用，以下是在 Windows 系統中安裝 &lt;code&gt;pip&lt;/code&gt; 套件管理程式的步驟。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 安裝 Python 程式開發環境教學</title>
      <link>https://blog.gtwang.org/python/windows-python-development-environment-installation-tutorial-2019/</link>
      <pubDate>Tue, 16 Jul 2019 12:18:12 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/windows-python-development-environment-installation-tutorial-2019/</guid>
      <description>&lt;p&gt;介紹如何在 Windows 安裝 Python 程式開發環境，撰寫並執行 Python 指令稿。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;如果想要在 Windows 中撰寫 Python 指令稿（script）、開發 Python 的程式，首先第一步就是要先安裝 Python 的開發環境，以下是在 Windows 中安裝 Python 的步驟教學。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 字串格式化教學與範例</title>
      <link>https://blog.gtwang.org/python/python-string-formatters-tutorial/</link>
      <pubDate>Thu, 27 Sep 2018 14:48:53 +0800</pubDate>
      <guid>https://blog.gtwang.org/python/python-string-formatters-tutorial/</guid>
      <description>&lt;p&gt;介紹 Python 的字串格式化方法，調整文字與數值的輸出格式，並提供實用的範例程式碼。&lt;/p&gt;
&lt;p&gt;

&lt;ins class=&#34;adsbygoogle&#34;
     style=&#34;display:block&#34;
     data-ad-client=&#34;ca-pub-7794009487786811&#34;
     data-ad-slot=&#34;9921134032&#34;
     data-ad-format=&#34;auto&#34;
     data-full-width-responsive=&#34;true&#34;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;在 Python 中若要以特定的格式來輸出文字或數值，可以使用透過各種字串的格式化方法來處理，而 Python 字串格式化的方法有兩種，一種是類似 C 語言 &lt;code&gt;printf&lt;/code&gt; 的語法，另外一種是後來發展的 &lt;code&gt;format&lt;/code&gt; 語法，兩種都可以使用，以下是各種格式化的使用方式。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
