顯示具有 #1092hw1 標籤的文章。 顯示所有文章
顯示具有 #1092hw1 標籤的文章。 顯示所有文章

2021年3月7日 星期日

s1073315 影像處理作業 1

 作業內容:

撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

 

Coding環境:

l   Windows 10 2004

l   Visual Studio Code 1.54.1

l   Anaconda 4.8.3

l   Python 3.9.1

l   OpenCV 4.5.1

 

程式說明:

1.    使用Python import OpenCV

2.    使用cv2.imread讀取圖片存入img

3.    輸入v值並轉成int

4.    透過numpy根據img.shape建立一個跟圖像一樣大小的矩陣並用v值填滿

5.    img與剛才建立的矩陣相加

6.    檢查是否有>255<0的情況並修正

7.    int32型態的矩陣轉為unit8

8.    使用cv2.imwrite儲存並用cv2.imshow顯示輸出的圖片

 

處理結果:


原圖:



v = 100 / v = -100






2021年3月6日 星期六

s1071523 影像處理作業一

 作業說明:

從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255<= v <= 255),並將圖像儲存至一個新圖像檔案中。

開發環境:

  • Windows 10
  • Visual Studio Code
  • Python 3.8.5
  • OpenCV 4.4.0

實作:

  1. 輸入整數值v
  2. 使用 cv2.imread(path,1) 讀取圖片,第一個參數為圖片路徑,第二個參數為設定圖片格式為彩色
  3. 使用cv2.imshow()  顯示圖片
  4. 使用cv2.waitKey(0)、cv2.destroyAllWindows() 等待使用者輸入任意鍵關閉圖片視窗
  5. for迴圈的方式改變每個像素的值
  6. 顯示改變後的圖片
  7. 輸入任意鍵關閉圖片視窗
  8. 使用cv2.imwrite() 儲存新圖片

執行結果:

整數值v為-50時的執行結果



2021年3月5日 星期五

s1073312 影像處理作業 1

 

 作業說明:

撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

開發環境:

  • Windows 10 
  • Python 3.9.1
  • OpenCV 4.5.1
  • Visual Studio Code 
程式說明:

  1. 使用Python先載入OpenCV函式庫
  2. 請使用者輸入v值
  3. 使用cv2.imread將圖片載入
  4. 使用morty.shape取得圖片長寬
  5. 透過三層迴圈來對每個像素的R,G,B值加上剛剛輸入的v,來調整圖片的亮度
  6. 如果像素的R,G,B值加上v後大於255,就將其值設為255,若小於0,將其值設為0 
  7. 使用cv2.imwrite存檔
  8. 使用cv2.imshow將修改後的圖片顯示出來
 原圖:

v=100















v=-100






2021年3月4日 星期四

s1071545 影像處理作業 1

 1. 作業內容:

        讀入一張圖片並輸入一個整數v,讓圖像的每一個點像素的數值加上v

2. 開發環境

        Window 10

        Anaconda

        VScode

        Python

3. 運行說明

        開始執行後輸入圖片的位置,如果是錯誤位置或非圖片檔(jpgpng)則使用者得重新輸入,再接著輸入要增加的數值(v),數值的範圍為-255~255。當輸入完數值後會跳出一個視窗並顯示處理完的圖片,若想關閉視窗,對視窗按下鍵盤的任意鍵即可。關閉視窗後能再次輸入圖片位置,想關閉系統則在輸入檔案位置時輸入”end””END”

4. 程式解說

        在撰寫程式碼時,有遇到以下的問題:

        1)輸入檔案位置內含中文名稱:

如果使用cv2.imread去讀取圖片,那麼沒辦法使用包含中文名稱的位置。cv2.imdecode這個函數解決了這個問題,這函數能從指定的記憶體去讀取數據並將數據轉換為圖片。

        2)處理速度過慢:

將每一像素進行加減,很直觀的會去使用多層迴圈來處理,但這種方法在我的測試中約會跑5~7秒,所以我去尋找了能加速的方法。將圖片讀進來後,儲存格式為numpy.uint8,而我先其轉換為int32來方便後面的判斷。再來去獲取圖片的heightwidthchannels並創建一個與圖片相同大小的numpy array,而數值皆為使用者輸入的v。我們將圖片的陣列和剛剛創建的陣列相加並用numpy內建的索引將大於255的數值變為255、小於0的數值變為0,如果剛剛沒有轉成int32,則數值不會出現小於0或大於255的數值。最後再將圖片陣列轉回uint8

        另外我有使用os函式庫去驗證圖片的位置,由於中文名稱的問題,程式會將使用者輸入的位置均轉為絕對位置再讀取圖片。


         執行畫面:


   原圖(輸入數值為0)

原圖(輸入數值為0、輸入位置包含中文名稱)

(輸入數值為200)

(輸入數值為-200)

執行結束


s1071546 影像處理作業 1

 作業說明:

撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

Coding環境:

  • Windows 10 20H2
  • Anaconda 3.18.11
  • Python 3.9.1
  • OpenCV 4.5.1
程式說明:

  1. 使用Python先載入OpenCV函式庫
  2. 請使用者輸入要處理的照片檔名
  3. 使用cv2.imread將檔案載入並存成變數img
  4. 請使用者輸入處理完要存檔的檔案名稱
  5. 請使用者輸入v值並轉成Integer
  6. 透過img.shape獲得圖片的長寬以及通道數量 
  7. 透過三層迴圈來對圖片每一行、每一列中的每一個通道,也就是每個像素的B,G,R值加上剛剛輸入的v,來調整照變的亮度
  8. 如果像素的B,G,R值加上v後大於255,就將其值設為255,如果B,G,R值加上v後小於0,則將其值設為0 
  9. 使用cv2.imwrite存檔
  10. 使用cv2.imshow將結果以視窗的形式顯示出來
處理結果:

原圖

v值為50的處理結果


v值為-50的處理結果


2021年3月2日 星期二

s1071540 影像處理作業1

 

一、作業說明

 撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值v( -255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

二、作業環境&語言

Windows 10 + Visual Studio 2017 + OpenCV4.1.2 (Debug x64)

C++

三、方法&步驟

1.       cin輸入變數v

2.       imread讀取圖片

3.       at讀取像素值

4.       用迴圈將每個像素的RGB三值都加上v (範圍控制在0~255)

5.       imshow顯示修改後的圖

6.       imwrite另存新檔

 

五、執行結果

輸入畫面: 

圖片結果:(依序為原圖、v=-100、v= 100)


圖源:https://memes.tw/image/6619

s1061810 影像處理作業 1

作業題目:
圖像亮度調整 
撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

使用環境:
Windows 10
Python 3.8
opencv-python 4.5.1.48

實作方法:
  1. 用imread()讀取資料夾中的圖片
  2. 再依照使用者輸入的值用迴圈先判斷像素值是否溢位,若是溢位了,大於255的話將上限值調為255,若小於0的話下限值調為0,若像素值沒有溢位則將值加入在圖片中每個像素點中
  3. 用imwrite將調過後的圖像另存起來
  4. 用imshow()將圖片展示於視窗中

執行結果:
原圖
val = 200

val = -100

2021年2月26日 星期五

s1073317 影像處理作業1

一﹑作業說明:

作業一要我們撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。


二﹑使用環境:

OSWin10

編譯器:VS2017

語言:C++OPENCV 4.5.1

 

三﹑實作方法:

1.     讀取圖片

2.     用三層的for迴圈調整col/row/channel對應的每個點的值,使用saturate_cast function保護每點的值不超過0~255的區間

3.     用視窗呈現結果

4.     儲存照片

 

四﹑執行結果:

原圖

+90



-90