s1091455 作業2

    題目說明:

        撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)
            (a)利用Sobel Operators 偵測並輸出邊緣成分圖
            (b)設計一個類似素描線條的自畫像圖案。

    開發環境:

        environment       :Ubuntu-22.04
        language            :C++ ( Visual Studio Code )
        date                    :2023/03/18
        package             :OpenCV - 4.7.0

      excute command : 
        g++ Assignment2.cpp `pkg-config --libs opencv4` `pkg-config --cflags opencv4` && ./a.out  

   實作:

        以下是完成後的結果:

(原圖)

        
(經過Sobel operate 後的結果)


(黑白反轉後的,似素描的圖片)


    程式說明:

    

        利用 Sobel function 對邊緣進行檢測,分別針對像素點上的x方向及y方向進行檢測,取得像素點上的梯度,並利用梯度的變化進行邊緣的檢測,但因為梯度值可能會有負值的情況,因此利用 convertScaleAbs function ,將所有得到的梯度值進行絕對值,避免有負值的存在進而影響結果。


            對x y 方向檢測並取絕對值後,利用 addweighted function 對兩個方向的梯度圖像進行合併,得到更完整的梯度圖像,就可以獲得完整的邊緣圖像。最後再利用 bitwise_not function 進行黑白的反轉,就可以得到類似素描的圖片了。


    程式執行:

            在 ubuntu 的環境中執行 opencv,必須先進入到檔案所在的位置



          進入檔案所在位置後,在終端機輸入 


                    g++ filename.cpp `pkg-config --libs opencv4` `pkg-config --cflags opencv4`


          對程式進行編譯。


    
         編譯後會產生一個名叫 a.out的執行檔,如下圖。
   
   

        在終端機輸入 ./a.out 即可執行整個程式。
        也可以用 
                
           g++ filename.cpp `pkg-config --libs opencv4` `pkg-config --cflags opencv4`&& ./a.out
        
        編譯完後會直接執行程式。








留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6