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

2022年3月11日 星期五

s1073513 作業 2

 

1. 作業說明:

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

2. 開發環境:

 

o                  Windows 10

 

o                  Visual Studio 2019

 

o                  OpenCV4.5.5

 

3. 程式流程:

1.跳出兩個視窗數字一為整張圖旋轉;二為中心內切圓的選轉圖

2.成功之後會跳出圖片,上方會有滑動條,可以調整角度,預設為零度,可以從0~359度,並及時出現在畫面中。

3.內切圓切割方法為先以中心為基準切出一個內切圓,切完之後會有一個內切圓還有內切圓以外的圖片,旋轉內切圓的圖片,並且合併內切圓以外的圖片,即可完成

4. 執行結果:

    









s1081416 hw2

 作業2說明:


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


開發環境:


Windows10


Vscode


Opencv 4.5.5


Python 3.10.2



實作方法:

第一個整張圖片倒轉:用cv2.imread載完圖片,cv2.nameWindow叫出視窗,之後使用createTrackbar叫出滾動條,再連結到函式whirl_1, 裡面的getTrackbarPos可以隨時更新位置,和getRotationMatrix2D用來翻轉(中心點,角度,倍數),而warpAffine則能夠將我們仿射完的圖片,保持平行性與平直性,return完後cv2.imshow,然後寫一個while迴圈讓他一直跑,最後設一個key結束程式


第二個中心圓圖片倒轉:用numpy建立一個全黑的圖片,接著畫上一個白色的圓,利用cv2.bitwise_and遮罩,做出原本照片的中心圓.此時再讀取一次原本的圖片,在上面畫一個黑色的中心圓,再把原本圖片的中心圓以及畫了黑色圓的圖片相加cv2.add傳入函式whirl,之後步驟就和上一個做法一樣了





2022年3月10日 星期四

s1071516 作業2

 

作業說明

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

開發環境

  • Windows 10
  • Visual Studio 2017
  • OpenCV 4.5.5

程式說明


輸入1或2選擇如何旋轉圖片

a.利用getRotationMatrix2D和warpAffine旋轉和計算旋轉後的圖片

b. 
1.先把圖分成中心圓+中心圓以外
2.同樣利用getRotationMatrix2D和warpAffine只旋轉中心圓
3.再將旋轉過後的中心圓和中心圓以外的合併起來


執行結果


s1083343 作業2

 作業說明:


將一張圖像用兩種方式旋轉(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋 轉 0 度至 359度)

利用一個滑動條(trackbar)控制旋轉角度。



一、開發環境:


     Windows10

 

      Vscode

 

      Python3.9.6

 

     Opencv-Python_4.5.5.62



二、程式說明:


創造兩個視窗加上trackbar,一個視窗是以圖片為中心整張旋轉,另一個是讓圖片中心內切圓的部分使其旋轉,第二個中心圓圖片倒轉:,首先用numpy建立一個全黑的圖片,接著在上面畫一個白色的圓,然後用cv2.bitwise_and來用mask遮罩,取得原本照片的中心圓.再把原本照片的中心圓和畫了黑色的圓的照片相加cv2.add傳入函式spin,之後步驟就和第一個一樣了

三、結果:
        
        

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合併就是結果。

執行結果





s1083338 作業

 

作業說明

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

開發環境

  • Windows 10
  • Visual Studio 2019
  • OpenCV 4.5.5
  • C++

實作流程

1.  建構Trackbar,設置成360,並放在視窗裡。

2.  輸入 1 或 2 進入不同翻轉相片模式。

3. mode 1 : 

    利用 getRotationMatrix2D 輸入翻轉座標並利用warpAffine來翻轉。

4. mode 2:

    先將圖片分成兩部分,切成內圓,外圍不填入圖片,另一張則相反

    利用 ,再重複mode1的方式 , 只是只需要翻轉內圓的圖,最後再利用

    bitwise_or將兩張相片結合即可。

執行畫面:

mode 1 :


mode2:












s1073353 作業2

作業說明

開啟兩個視窗分別將一張圖像的整張圖像和內切圓區域沿著中心逆時針旋轉0度至360度,利用一個滑動條控制旋轉角度。

開發環境

  • Windows 10
  • Visual Studio 2019
  • OpenCV 4.5.5

程式說明

  1. imread讀取圖片
  2. 建立兩個含有滑動條的視窗,分別是旋轉整個圖片和旋轉中心部分
  3. 依照滑動條數值建立旋轉矩陣
  4. 旋轉整個圖片的使用 warpAffine()求出旋轉後的圖片
  5. 旋轉中心部分的確認像素點所在位置如果在中心圓圈內,就反推哪一個像素點會旋轉到此處
  6. imshow秀出圖片

執行結果


 

s1081509 作業 2

 

作業說明:

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

環境:

Ubuntu-20.04

Vim 8.2

CMake 3.16.3

OpenCV  4.2.0

程式功能:

1.      imread()讀圖片

2.      namedWindowcreateTrackbar製造GUI

3.      若為mode 1,使用getRotationMatrix2D生成轉移矩陣,warpAffine將圖片旋轉

若為mode 2,先複製一個新的Mat ,用circle將內切圓塗黑,內切圓由r= min(rows/2,cols/2)Point( img.cols/2, img.rows/2 )所定義,再定義一個新的Mat作為Mask,此Maskzeros全部先塗黑再用circle將內切圓塗白,之後bitwise_and,可得保留內切圓內的圖像,將此圖像旋轉,再用addWeighted合成

4.      Imshow展示圖片

使用指令

make ; ./hw2 yzu.bmp 1

make ; ./hw2 yzu.bmp 2

1 for whole image, 2 for circle