2019年3月20日 星期三

1051423 的作業1

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

二、環境: 
MS Window 10
Visual Studio 2017
OpenCV 3.4.1


三、說明: 
1. 載入影像
    Mat img = imread("color_pic.png", CV_LOAD_IMAGE_COLOR);

2. 建立視窗
    namedWindow("Homework 1", 1);

3. 4個滑桿分別調整 "亮度" 和 "對比度",移動滑桿呼叫on_trackbar()
    createTrackbar("亮度(+)", "Homework 1", &brightness_p, bp_maxValue, on_trackbar);
    on_trackbar(brightness_p, 0);

4. on_trackbar()

    (1) 使用ptr處理每個像素
         const uchar *imgPtr = img.ptr<const uchar>(iH);
         uchar *dstPtr = dst.ptr<uchar>(iH);
    (2) y = a * x + b,對比度為 a 和 b 調整,亮度為 b 調整  &  (3) saturate_cast<uchar>處理溢位問題
         dstPtr[iW] = saturate_cast<uchar>(contrast*imgPtr[iW] + brightness + (1 - contrast) * 125);
    (4) 呈現影像
         imshow("Homework 1", dst);

5. 建立滑鼠事件
    setMouseCallback("Homework 1", onMouse, NULL);

6. 偵測左鍵雙擊,儲存影像
    if (Event == CV_EVENT_LBUTTONDBLCLK)
         imwrite("output.png", dst);

四、實作: 


原圖


亮度增加 (+87)                                                                           亮度降低 (-87)

對比度增加 (x2.0)                                                                      對比度降低 (x0.5)

亮度增加 (+87) + 對比度增加 (x2.0)                                          亮度降低 (-87) + 對比度增加 (x2.0)

亮度增加 (+87) + 對比度降低 (x2.0)                                          亮度降低 (-87) + 對比度降低 (x2.0)

沒有留言:

張貼留言