顯示具有 s1073306 標籤的文章。 顯示所有文章
顯示具有 s1073306 標籤的文章。 顯示所有文章

2022年6月6日 星期一

s1073306 作業7

 作業說明

請撰寫一個程式,利用數學形態學影像處理運算(erode(),dilate()等函式),計算出所附圖像中圍棋個數。

a.請在部落格呈現經由數學形態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖
b.程式不一定可以算出正確棋子數量,越接近正確答案越好。

開發環境

  • windows 10
  • opencv-4.5.5
  • visual studio 2017

程式流程

  1. 用imread讀取圖片,轉成灰階
  2. GaussianBlur將圖片模糊,再用erode和dilate處理圖片
  3. HoughCircles偵測圖片中的圓形
  4. 最後用circle畫出偵測到的圓

執行畫面

IMG_5702:

IMG_5703:

IMG_5704:







2022年5月19日 星期四

s1073306 作業5

 作業說明

撰寫一個程式將所附圖像flower.jpg的黃色花瓣區域顯示出來

開發環境

windows 10
visual studio 2017
opencv 4.5.4
c++

實作方法

1.imread讀取照片
2.cvtcolor轉成hsv圖片
3.設定黃色的上限跟下限並用inRange做成mask
4.用bitwise_and合成出結果

結果





2022年4月14日 星期四

s1073306 作業4

  1. 作業說明
請撰寫一個程式,讀取一張256色灰階照片

(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出

(2)對圖像利用Gaussian Low-Pass filter 處理,輸出平滑後圖像。

2.作業環境
  • windows 10
  • opencv
  • c++
  • visual studio

3.實作方法

1.用imread讀取圖片,IMREAD_GRAYSCALE轉成灰階
2.用getOptimalDFTSize和copyMakeBorder處理照片
3.用dft做傅立葉轉換,split將實部和虛部分開
4.magnitude取得頻譜大小,phase取得相位角度
5.normalize後輸出結果
6.用GaussianBlur輸出平滑後圖片

4.執行結果







2022年3月24日 星期四

s1073306 作業3

 作業說明:

撰寫一個程式,以灰階模式讀取一張圖像imread(path,IMREAD_GRAYSCALE)
(a)利用Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描顯條的自畫像圖案。(想想:如何利用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)

開發環境:

windows 10
visual studio 2017
c++
opencv-4.5.5

實作方法:

  1. 先用imread讀取圖像並轉成灰階
  2. 用Sobel讀取x跟y軸的方向梯度
  3. 用addweighted合併成邊緣成分圖
  4. 之後用2個for迴圈把圖像黑白顏色交換
  5. 最後用threshold將圖像二值化

執行結果



2022年3月10日 星期四

s1073306 作業2

 作業說明:

撰寫一個程式將一張圖片的(a)整張圖片(b)中心內切圓區域,旋轉一個角度(逆時針旋轉0到359度):利用一個滑動條控制旋轉角度。

環境:

  • windows 10
  • visual studio 2017
  • c++

實作流程:

  1. 先輸入圖片的位址並用imread讀取
  2. 輸入要使用哪種功能? 0是旋轉整張圖片 1是只旋轉中心圓
  3. 如果是0,就先求出圖片的中心點,用getTrackbarPos去讀取trackbar的數值,再用getRotationMatrix2D和warpAffine去旋轉圖片,最後用imshow顯示結果。
  4. 如果是1,先判斷圖片哪邊是寬,再劃出中心內切圓,用兩個for迴圈去分割img1和img2,最後把img1旋轉再跟img2用bitwise_or合併就是結果。

執行結果





2022年2月24日 星期四

s1073306 作業1

 作業說明

撰寫一個程式讀取一張照片,將圖像中每一個點像素的值各加上一個數值。如果輸入圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像,則只改變每個像素的R值。

開發環境

  • Windows 10
  • Visual Studio 2017
  • Opencv-4.5.5
  • C++

實作方法

  1. 輸入照片的位址後用imread()讀取
  2. 判斷照片是灰階圖或是彩色圖
  3. 輸入要加上的像素值
  4. 如果是彩色圖就R值加上輸入的像素值,是灰階圖就每個點都加上
  5. 用imshow()輸出結果

輸出結果

bookGray +100
bookGray -100

lennaRGB +100
lennaRGB -100