Skip to content

Latest commit

 

History

History
221 lines (169 loc) · 13 KB

homework.md

File metadata and controls

221 lines (169 loc) · 13 KB

課程作業

每週勾選作業

週次 上課練習 勾選作業 加分題
第一週 0227 12-交換測試 291-高斯符號 288-練習打字289-福祿猴的反敗 290-車牌檢查碼
第二週 0305 294-我愛零分 295-三角形判斷296-多運動有益身心健康298-計算成績 300-遊蕩
第三週 0312 311-Go!325-植樹的法則(死限延長) 321-無限期支持資電館開門
第四週 0319 332-單字還原(北區) 329-大雄的打字機331-告白密文 328-計算機
第五週 0326 226-成績統計(北區) 344-拯救地球345-A.伊布的邀請(函數版)  
第七週 0409 346-大雄的最大公因數  
第十週 0430 235-成績交換359-還我臭臭泥366-電話銷售員  
第十一週 0507 369-書瑾與他的泡泡們 236-榜單排序370-園遊會371-古蹟の自燃發電  
第十二週 0514 153-文字轉轉轉 343-簡單的加法385-Winston 竟然發廢文 352-SuDoKu
第十三週 0521 387-紙包雞389-Vim 392-美國隊長 英雄內戰
第十四週 0528

大作業 1 - bitmap

繳交方式

  • 請在04 / 09 (六) 23:59前上傳至 sprout LMS 作業上傳系統
  • 請把所有檔案以zip壓縮,再命名為project01,詳細格式如下
  • 裡面有兩個資料夾分別是1, 2,1底下放error diffusion作業,2底下放你自由創作的的作業。
  • readme.txt 請簡要說明你這個部份做了什麼,或者你那些沒做,方便評分。
  • mountain_in.bmp 你可以自由更改名稱或圖片大小,但是要記得一併更改bmp_hdlr.h
project01.zip
├── 1
│   ├── bmp_error_diffuse.cpp
│   ├── bmp_gray_scale.cpp
│   ├── bmp_thresholding.cpp
│   ├── readme.txt // [簡要說明你這個部份做了什麼]
│   └── bmp_hdlr.h
└── 2
    ├── bmp_bonus.cpp // [「自由發揮」部份的code]
    ├── mountain_in.bmp // [輸入圖片,這個檔名可以不同]
    ├── readme.txt // [簡要說明你這個部份做了什麼]
    └── bmp_hdlr.h

如何執行

在你寫的code的同個資料夾下,必須要有bmp_hdlr.hmountain_in.bmp, 然後你寫的code大致向下面這樣,編譯並執行後便會輸出檔案mountain_out.bmp

#include <iostream>
#include "bmp_hdlr.h"

int canvas_r[height][width], canvas_g[height][width], canvas_b[height][width];

int main() 
{
  // 看你想做什麼~
}

如何使用自己的圖片

警告:使用自己的圖片非常麻煩!想要用自己的圖,就要做好處理一堆麻煩的準備! 如果你很想在第二部份自由創作使用自己的圖片的話,請把你的圖片拿去這個網站 轉成bmp檔,再編輯bmp_hdlr.h中的參數:

  • width: 寬
  • height: 高
  • bmp_in: 輸入檔案
  • bmp_out: 輸出檔案
// Here you can adjust value of width and height
static const int width = 960, height = 639; // should use 'size_t' though
// Here you can set filename of input image and output image
static const char *bmp_out = "mountain_out.bmp", *bmp_in = "mountain_in.bmp";

大作業 2 - OpenCV

遲交規則

  • Homework 1, 2 每遲交一天扣 5%
  • Homework 3 只允許遲交到 7/4 23:59 ,逾期以 0 分計算

資料連結

Homework 01 繳交方式

  • 請使用 作業檔案 521來完成本作業。
  • 請在06 / 02 (四) 23:59前上傳至 sprout LMS 作業上傳系統
  • 請把所有檔案以zip壓縮,再命名為project02,詳細格式如下
project02.zip
├── lena.jpg
├── sprout_opencv.h
└── blur.cpp

如何編譯/執行

在你寫的程式碼的同個資料夾下,必須有sprout_opencv.hlena.jpg(或是自行設定正確的路徑)。

作業內容

實作一支程式 blur.cpp,會將 lena.jpg 讀入,並用作業中的五種參數做高斯模糊,輸出 lena1.jpg ~ lena5.jpg 五個圖檔。

檔名 參數
lena1.jpg Kernel size 7 x 7, sigmaX = 1
lena2.jpg Kernel size 7 x 7, sigmaX = 2
lena3.jpg Kernel size 7 x 7, sigmaX = 3
lena4.jpg Kernel size 11 x 11, sigmaX = 5
lena5.jpg Kernel size 21 x 21, sigmaX = 5

可能需要用到的函式

SproutMatrix loadImage(const std::string &path)

SproutMatrix gaussianBlurOnImage(const SproutMatrix &src, int kernelSize, double sigmaX)

void displayImageWithTitle(const SproutMatrix &img, const std::string &title)

void waitKeyInput()

void writeImage(const std::string &path, const SproutMatrix &img)

詳細參數解釋請參考 sprout_opencv.h

Homework 02 繳交方式

  • 請使用 作業檔案 528 來完成本作業。
  • 請在06 / 10 (五) 23:59前上傳至 sprout LMS 作業上傳系統
  • 請把所有檔案以zip壓縮,再命名為project02-hw2,詳細格式如下
project02-hw2.zip
├── images
     └── faces.jpg
├── sprout_opencv.h
└── faceblur.cpp

如何編譯/執行

在你寫的程式碼的同個資料夾下,必須有sprout_opencv.himages 中的 faces.jpg(或是自行設定正確的路徑)。

作業內容

實作一支程式 faceblur.cpp,會將 images 資料夾中的 faces.jpg 讀入,並依照作業需求將上頭的四張人臉打上模糊化,並使用 writeImage 輸出一張facesblur.jpg圖檔。

可能需要用到的函式

SproutMatrix createNewImage(int rows, int cols)

SproutMatrix loadImage(const std::string &path)

SproutMatrix drawCircleOnImage(const SproutMatrix &img, const SproutPoint &center, int radius, int R, int G, int B)

SproutMatrix gaussianBlurOnImage(const SproutMatrix &src, int kernelSize, double sigmaX)

void writeImage(const std::string &path, const SproutMatrix &img)

std::vector<SproutRectangle> getFacesFromMatrixWithSize(const SproutMatrix &img, const int smallSize, const int largeSize)

int sproutRound(const double value)

SproutMatrix copyImageWithMask(const SproutMatrix &base, const SproutMatrix &src, const SproutMatrix &mask)

詳細參數解釋請參考 sprout_opencv.h

Homework 03 繳交方式

  • 請使用 作業檔案 609 來完成本作業。
  • 請在07 / 2 (六) 23:59前上傳至 sprout LMS 作業上傳系統
  • 如果有做加分項目,請多寫一個 README 檔案告訴我們你多做了哪些功能!
  • 請把所有檔案以zip壓縮,再命名為project02-hw3,詳細格式如下
project02-hw3.zip
├── sprout_opencv.h
├── README
└── laughingman.cpp

如何編譯/執行

  • 在你寫的程式碼的同個資料夾下,必須有sprout_opencv.hobama.mp4laughing_man的圖片(或是自行設定正確的路徑)。
  • 請將 obama.mp4laughing_man 資料夾放在跟程式碼同一個資料夾下。
  • 詳細的格式如下,但請記得上傳作業時請勿將 obama.mp4laughint_man 資料夾上傳,檔案會太大。
├── sprout_opencv.h
├── README
├── laughingman.cpp
├── obama.mp4
└── laughing_man/laugh_nbg/

作業內容

實作一支程式 laughingman.cpp,會將 obama.mp4 讀入,並依照作業需求obama.mp4 中出現的人臉都打上笑面男的圖像,最後輸出一個 output.mp4 的檔案。

常見錯誤

出現 [Error] 'LINE_8' is not a member of 'cv'
  • 請記得將 Dev-C++ 右上角的編譯選項改為 TDM-GCC x64 Release / OpenCV 3.10
出現 [Error] ld returned 1 exit status
  • 請不要使用 Dev-C++ 的專案,直接開啟一個檔案即可。