程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> openCV學習記錄:濾鏡:連環畫

openCV學習記錄:濾鏡:連環畫

編輯:關於C++

上小學的時候看了很多遍七龍珠的小本連環畫,也在學校旁邊的借書店借到過那種合訂的大本。當時一直以為作者是中國人,還很奇怪為什麼有人叫鳥山明那麼怪的名字。知道真相的我眼淚掉下來:(。

連環畫濾鏡主要算法思想:

1.用如下公式計算新的RGB值:
R = (|2*g-b+r|*r)>>8;
G = (|2*b-g+r|*r)>>8;
B = (|2*b-g+r|*r)>>8;
右移8位相當於除以256.

2.用平均值法計算灰度值:
Gray = (R+G+B)/ 3

3.設定新的RGB值:
R= Gray + 10;
G = Gray + 10;
B= Gray;
RGB的值要約束在0與255之間。

完整代碼如下:

#include
#include

using namespace cv;
using namespace std;

void liHuanHuaFilter(Mat &srcImage);

int main(){
    Mat srcImage = imread("longzhu.jpg");
    if(!srcImage.data){
        cout<<"讀入圖片錯誤!"<(j);
        for(int i = 0;i>8;
            int G = (abs(2*b-g+r)*r)>>8;
            int B = (abs(2*b-g+r)*r)>>8;

            R = max(0,min(R,255));
            G = max(0,min(G,255));
            B = max(0,min(B,255));

            int gray = (R+G+B)/3;

            R = min(255,gray + 10);

            data[i*3+2] = R;
            data[i*3+1] = R;
            data[i*3] = gray;
        }
    }

    imshow("連環畫濾鏡",srcImage);
}

來張龍珠的效果圖:

這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved