發表文章

目前顯示的是有「s1091540」標籤的文章

s1091540 作業3

圖片
開發環境: Windows 11 + Visual Studio 2022 + OpenCV 4.7.0(C++) 程式功能: 程式開始執行後,自動依序開啟四個視窗(Gray、Spectrum、Phase、IDFT),手動關閉一個視窗後才會顯示下一個視窗,Gray顯示讀入的灰階圖,Spectrum顯示頻譜大小,Phase顯示相位角度,IDFT顯示還原後圖像,手動關閉第四個視窗後結束程式。 程式片段: Gray: imread( ):以IMREAD_GRAYSCALE讀取圖片 namedWindow( ):開啟Gray視窗 imshow( ):在Gray視窗顯示圖片 waitKey( ):讓視窗維持開啟 Spectrum: getOptimalDFTSize( ):取得最佳圖片大小 copyMakeBorder( ):在圖片的邊界加上0 merge( ):合併兩個通道 dft( ):進行離散傅立葉轉換 split( ):將實部和虛部分成兩個通道 magnitude( ):計算兩個通道的magnitude log( ):將值轉換成對數範圍 normalize( ):將值歸一化成0到1 namedWindow( ):開啟Spectrum視窗 imshow( ):在Spectrum視窗顯示圖片 waitKey( ):讓視窗維持開啟 Phase: phase( ):計算相位角度 normalize( ):將值歸一化成0到1 namedWindow ( ):開啟Phase視窗 imshow( ):在Phase視窗顯示圖片 waitKey( ):讓視窗維持開啟 IDFT: idft( ):進行反向離散傅立葉轉換 split ( ):將實部和虛部分成兩個通道 magnitude( ):計算兩個通道的magnitude normalize( ):將值歸一化成0到1 namedWindow( ):開啟IDFT視窗 imshow( ):在IDFT視窗顯示圖片 waitKey( ):讓視窗維持開啟 執行結果: Gray(原圖) Spectrum (頻譜大小) Phase(相位角度) IDFT(還原後圖像) 執行過程:

s1091540 作業2

圖片
開發環境: Windows 11 + Visual Studio 2022 + OpenCV 4.7.0(C++) 程式功能: 程式開始執行後,自動依序開啟三個視窗(Gray Image、Edge Map、Sketch Effect),手動關閉一個視窗後才會顯示下一個視窗,Gray Image顯示讀入的灰階圖,Edge Map顯示邊緣成分圖,Sketch Effect顯示線條自畫像,手動關閉第三個視窗後結束程式。 程式片段: Gray Image: imread( ):以IMREAD_GRAYSCALE讀取圖片 namedWindow( ):開啟Gray Image視窗 imshow( ):在Gray Image視窗顯示圖片 waitKey( ):讓視窗維持開啟 Edge Map: Sobel( ):計算X、Y方向的導數,進行邊緣偵測 convertScaleAbs( ):將圖片形式轉為uint8 addWeighted( ):利用權重將X、Y方向的圖片合成 namedWindow( ):開啟Edge Map視窗 imshow( ):在Edge Map視窗顯示圖片 waitKey( ):讓視窗維持開啟 Sketch Effect: threshold( ):將Edge Map進行二值化 bitwise_not( ):將二值化圖片進行反色 GaussianBlur( ):將反色圖片進行高斯模糊 namedWindow( ):開啟Sketch Effect視窗 imshow( ):在Sketch Effect視窗顯示圖片 waitKey( ):讓視窗維持開啟 執行結果: 灰階圖 邊緣成分圖 線條自畫像 執行過程:

s1091540 作業1

圖片
開發環境: Windows 11 + Visual Studio 2022 + OpenCV 4.7.0(C++) 程式功能: 輸入字元a(旋轉整張圖片)或b(旋轉中心內切圓),自動開啟視窗(包含滑動條及圖片),透過滑動條控制圖片旋轉角度,在滑動條下方顯示對應效果,手動關閉視窗後可不斷再次輸入,若輸入a跟b以外的字元則結束程式。 程式片段: main( ): imread( ):讀取圖片 namedWindow( ) : 開啟視窗 imshow( ):顯示圖片 createTrackbar( ) :新增滑動條 waitKey( ):讓視窗維持開啟 rotate_a( ): 計算圖片中心點 getRotationMatrix2D( ):依照中心點及角度建立旋轉矩陣 warpAffine( ):進行圖片旋轉 imshow( ):顯示旋轉後的圖片 rotate_b( ): 建立mask1 circle( ):在mask1上挖出白色圓圈 建立mask2 bitwise_not( ):利用mask1製作與其相反的mask2 copeTo( ):以mask1製作im1(內切圓部分) copeTo( ):以mask2製作im2(內切圓以外部分) 計算圖片中心點 getRotationMatrix2D( ):依照中心點及角度建立旋轉矩陣 warpAffine( ):進行內切圓部分圖片旋轉 add( ):將im1與im2疊加,合成一張圖片 imshow( ):顯示合成後的圖片 執行結果: (a)旋轉整張圖片 (b)旋轉中心內切圓 執行過程: