顯示具有 110 hw2 標籤的文章。 顯示所有文章
顯示具有 110 hw2 標籤的文章。 顯示所有文章

2022年3月10日 星期四

s1081526 作業2

 1.開發環境:

opencv:4.5.5

windows10

visual studio 2019,c++


2.作業說明:

雖然專案叫做hw1但請不要在意,我只是懶得重新架設環境所以繼續用了之前的專案。

一開始有兩個模式可以選,模式1就是普通的整張圖旋轉;模式2則是圖中圓形的部分會旋轉。

模式選擇


兩個模式都是用createTrackbar來製造滑動條。

然後在createTrackbar的下一行需要先呼叫一次觸發函式,不然一開始圖片不會出現。

模式1:

移動滑塊的話會觸發的函式是picRotate。

其中就是指定圖片的旋轉中心,旋轉角度,和縮放比例後,用getRotationMatrix2D來取得旋轉矩陣。再使用warpAffinerup進行仿射變換,就可以達到整張圖片的旋轉。

原圖

拉動滑塊旋轉


模式2:

一進入模式2就會先執行我寫的cutPic函式,它的作用是先把原圖切成:一張只有要旋轉的圓形部分的圖片,和一張除了圓形以外的其他地方的圖片。

會切成這兩張

接著移動滑塊的話會觸發的函式是circleRotate。

它執行的動作就是,將先前切下圓形的圖片旋轉後,再與剩下的部分結合。

旋轉前

旋轉後


2022年3月9日 星期三

s1061551 作業2

 

 作業說明:

將一張圖以2種方式進行旋轉

1.      整張圖像

2.      中心的內切圓區域,旋轉一個角度

 

開發環境:

1.     window11

2.     Microsoft Viusal Studio 2019

3.     C++

4.     OpenCV 4.5.5

程式說明:

1.     將圖片名稱與其路徑打上

2.     建立2個視窗,並且附加上trackbar

3.     而圖片旋轉的部分,只要是由getRotationMatrix2D來計算出旋轉矩陣,接著使用warpAffine來處理整張圖片。

4.     偵測trackbar是否有在進行拉動,若有,則按照計算角度的方式來使圖片進行翻轉。

 

 

 

s1073530 作業2

 一、作業說明

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

二、開發環境

Windows11

Visual Studio 2019

OpenCV4.5.5


三、實作方法

1. 輸入圖片路徑及名稱,利用imread()讀取圖片。若讀取失敗,跳出訊息並結束執行。

2. 成功後跳出視窗,AfterRotation為整張圖旋轉,AfterRotation2為中心內切圓旋轉,利用上方滑動條(0~360度)調整角度。

程式原理:

1. 將原圖分割,切出一個內切圓的圖及外框。

2. 利用每個點座標與內切圓的距離,判斷是否屬於內切圓的部分。

3. 調整trackbar的角度可將中間內切圓的圖做旋轉。

4. 最後再將兩張圖(內切及外框)做合併。

四、執行結果

                                                                        整張圖旋轉50度

                                                                   中心內切圓旋轉61度












2022年3月8日 星期二

s1081502 作業2

 作業說明:

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


開發環境:

  •       Window10   
  •       Microsoft Visual Studio 2017
  •       OpenCv 4.5.5

程式功能:

  • 輸入欲讀取圖片的名稱或路徑
  • 輸入想要使用的模式,輸入a為旋轉整張圖像,b為旋轉中心內切圓區域
  • create一個trackbar(範圍0~359)
  • 判斷使用者輸入的模式後,先找出圖片中心點,再透過getRotationMatrix2D得到旋轉矩陣
  • 接著再使用warpAffine得到旋轉後的圖片
  • 如果模式為b,則先判斷長短邊,找出內切圓,接著做三個步驟
  • 1.從圖中切出內切圓並旋轉它
  • 2.把圖中內切圓部分挖空
  • 3.把前兩個步驟的圖片合起來

執行結果:

                                                                       

原圖

a模式旋轉150度

b模式旋轉100度



2022年3月6日 星期日

s1073522 作業 2

 

 一、 作業說明

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

二、 開發環境

  • Windows 11
  • Visual Studio 2017
  • OpenCV - 4.5.5

三、 實作方法

  1. 利用 imread 讀取圖片。
  2. 整張圖片使用 getRotationMatrix2D 及 warpAffine 函式旋轉。
  3. 內切圓則是使用 for 迴圈判斷該像素點在內切圓內或外,分別儲存到 img_in 及 img_out,再使用 getRotationMatrix2D 及 warpAffine 函式旋轉,旋轉完再使用 for 迴圈將像素點疊加上去。

四、 程式使用方法

  1. 程式會跳出兩個視窗,分別為整張圖旋轉及內切原旋轉,拉動視窗內的 trackbar 以旋轉圖片。
五、 執行結果

  • (a)整張圖像旋轉42度



  • (b)中心內切圓區域旋轉143度





2022年3月3日 星期四

s1081545 作業2

 

作業說明:

主題:圖像旋轉(Image Rotation)

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

開發環境:

Windows 10 + Visual Studio 2013 + C#

實作方法:

1.  按下Load按鈕,選擇需要旋轉的圖片。

2.  選擇需要的SizeMode(Zoom / Center Image)

3.  選擇需要整張圖像(Entire Image)旋轉,還是中心內切圓區域(Circular center)旋轉。

4.  旋轉的角度會顯示在Rotation angle(也可直接輸入角度)

5.  按下Save會將新的圖片存檔。

執行結果: