最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV-Python實(shí)現(xiàn)懷舊濾鏡與連環(huán)畫濾鏡

 更新時間:2021年06月09日 15:59:57   作者:一天一篇Python庫  
很多時候通過ps可以做很多效果,今天我們來介紹使用OpenCV-Python實(shí)現(xiàn)懷舊濾鏡與連環(huán)畫濾鏡,具有一定的參考價值,感興趣的可以了解一下

懷舊濾鏡實(shí)現(xiàn)原理

不管是榮耀華為手機(jī)還是其他的手機(jī),我們都可以找到相機(jī)中的懷舊效果,這是手機(jī)中常用的一種濾鏡效果。

懷舊風(fēng)格的設(shè)計(jì)主要是在圖像的顏色空間進(jìn)行處理。以BGR為例,對B、G、R這3個通道的顏色數(shù)值進(jìn)行處理,讓圖像有一種泛黃的懷舊效果。設(shè)計(jì)的轉(zhuǎn)換公式如下:

B=0.272r+0.534g+0.131*b

G=0.349r+0.686g+0.168*b

R=0.393r+0.769g+0.189*b

計(jì)算公式中的小寫的bgr是原圖像的RGB通道的顏色,結(jié)果BGR是懷舊變換后的值。需要注意的是,顏色值的范圍在[0,255],需要在程序中約束一下。

實(shí)現(xiàn)懷舊濾鏡

既然我們已經(jīng)了解了其實(shí)現(xiàn)的原理公式。下面我們直接上代碼實(shí)現(xiàn)該功能,具體代碼如下所示:

def cowboy_effect(img):
    new_img = img.copy()
    h, w, n = img.shape
    for i in range(w):
        for j in range(h):
            b = img[j, i, 0]
            g = img[j, i, 1]
            r = img[j, i, 2]
            B = int(0.272 * r + 0.534 * g + 0.131 * b)
            G = int(0.349 * r + 0.686 * g + 0.168 * b)
            R = int(0.393 * r + 0.769 * g + 0.189 * b)
            new_img[j, i, 0] = max(0, min(B, 255))
            new_img[j, i, 1] = max(0, min(G, 255))
            new_img[j, i, 2] = max(0, min(R, 255))
    return new_img


if __name__ == "__main__":
    img = cv2.imread("48.jpg")
    cv2.imshow("0", img)
    cv2.imshow("1", cowboy_effect(img))
    cv2.waitKey()
    cv2.destroyAllWindows()

運(yùn)行之后,效果如下:

效果

連環(huán)畫濾鏡原理

從懷舊濾鏡就可以看出來,其實(shí)相機(jī)的各種濾鏡效果就是對RGB的顏色通道進(jìn)行計(jì)算處理。既然懷舊濾鏡有公式,那么肯定的連環(huán)畫濾鏡也有公式。它的具體公式如下:

R = |g – b + g + r| * r / 256

G = |b – g + b + r| * r / 256

B = |b – g + b + r| * g / 256

實(shí)現(xiàn)連環(huán)畫濾鏡

有了公式,下面直接套用公式即可。具體代碼如下所示:

# 連環(huán)畫濾鏡
def comics_effect(img):
    new_img = img.copy()
    h, w, n = img.shape
    for i in range(w):
        for j in range(h):
            b = img[j, i, 0]
            g = img[j, i, 1]
            r = img[j, i, 2]
            R = int(int(abs(g - b + g + r)) * r / 256)
            G = int(int(abs(b - g + b + r)) * r / 256)
            B = int(int(abs(b - g + b + r)) * g / 256)
            new_img[j, i, 0] = R
            new_img[j, i, 1] = G
            new_img[j, i, 2] = B
    return new_img


if __name__ == "__main__":
    img = cv2.imread("48.jpg")
    cv2.imshow("0", img)
    cv2.imshow("1", comics_effect(img))
    cv2.waitKey()
    cv2.destroyAllWindows()

運(yùn)行之后,效果如下:

連環(huán)畫濾鏡

綜上所述,基本上所有的基礎(chǔ)濾鏡都是通過對RGB通道的顏色值進(jìn)行公式計(jì)算得到的。當(dāng)然,要是數(shù)學(xué)很好,又對算法情有獨(dú)鐘的讀者,可以自己自研濾鏡算法豐富濾鏡的效果。

熔鑄算法

r = r*128/(g+b +1);
g = g*128/(r+b +1);
b = b*128/(g+r +1);

冰凍算法

r = (r-g-b)*3/2;
g = (g-r-b)*3/2;
b = (b-g-r)*3/2;

#include <math.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#define MAXSIZE (32768)
using namespace cv;
using namespace std;
 
void casting(const Mat& src)
{
 Mat img;
 src.copyTo(img);
 int width=src.cols;
 int heigh=src.rows;
 Mat dst(img.size(),CV_8UC3);
 for (int y=0;y<heigh;y++)
 {
  uchar* imgP=img.ptr<uchar>(y);
  uchar* dstP=dst.ptr<uchar>(y);
  for (int x=0;x<width;x++)
  {
   float b0=imgP[3*x];
   float g0=imgP[3*x+1];
   float r0=imgP[3*x+2];
 
   float b = b0*255/(g0+r0+1);
   float g = g0*255/(b0+r0+1);
   float r = r0*255/(g0+b0+1);
 
   r = (r>255 ? 255 : (r<0? 0 : r));
   g = (g>255 ? 255 : (g<0? 0 : g));
   b = (b>255 ? 255 : (b<0? 0 : b));
 
   dstP[3*x] = (uchar)b;
   dstP[3*x+1] = (uchar)g;
   dstP[3*x+2] = (uchar)r;
  }
 }
 imshow("熔鑄",dst);
 imwrite("D:/img/熔鑄.jpg",dst);
 
}
 
void freezing(const Mat& src)
{
 Mat img;
 src.copyTo(img);
 int width=src.cols;
 int heigh=src.rows;
 Mat dst(img.size(),CV_8UC3);
 for (int y=0;y<heigh;y++)
 {
  uchar* imgP=img.ptr<uchar>(y);
  uchar* dstP=dst.ptr<uchar>(y);
  for (int x=0;x<width;x++)
  {
   float b0=imgP[3*x];
   float g0=imgP[3*x+1];
   float r0=imgP[3*x+2];
 
   float b = (b0-g0-r0)*3/2;
   float g = (g0-b0-r0)*3/2;
   float r = (r0-g0-b0)*3/2;
 
   r = (r>255 ? 255 : (r<0? -r : r));
   g = (g>255 ? 255 : (g<0? -g : g));
   b = (b>255 ? 255 : (b<0? -b : b));
//    r = (r>255 ? 255 : (r<0? 0 : r));
//    g = (g>255 ? 255 : (g<0? 0 : g));
//    b = (b>255 ? 255 : (b<0? 0 : b));
   dstP[3*x] = (uchar)b;
   dstP[3*x+1] = (uchar)g;
   dstP[3*x+2] = (uchar)r;
  }
 }
 imwrite("D:/img/冰凍.jpg",dst);
}
 
int main()
{
 Mat src = imread("D:/img/scene04.jpg",1);
 imshow("src",src);
 casting(src);
 freezing(src);
 
 waitKey();
 
}

到此這篇關(guān)于OpenCV-Python實(shí)現(xiàn)懷舊濾鏡與連環(huán)畫濾鏡的文章就介紹到這了,更多相關(guān)OpenCV 懷舊濾鏡與連環(huán)畫濾鏡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python3 JSON編碼解碼方法詳解

    Python3 JSON編碼解碼方法詳解

    這篇文章主要介紹了Python3 JSON編碼解碼方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Python速成篇之像selenium一樣操作電腦詳解

    Python速成篇之像selenium一樣操作電腦詳解

    這篇文章為大家介紹了在Python中如何像selenium一樣操作電腦,本文主要使用的是pyautogui庫,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • 實(shí)踐Vim配置python開發(fā)環(huán)境

    實(shí)踐Vim配置python開發(fā)環(huán)境

    這篇文章給大家分享了Vim配置python開發(fā)環(huán)境的實(shí)踐心得,大家可以跟著嘗試操作下。
    2018-07-07
  • Python繪制多因子柱狀圖的實(shí)現(xiàn)示例

    Python繪制多因子柱狀圖的實(shí)現(xiàn)示例

    本文主要介紹了Python繪制多因子柱狀圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • python 打印出所有的對象/模塊的屬性(實(shí)例代碼)

    python 打印出所有的對象/模塊的屬性(實(shí)例代碼)

    下面小編就為大家?guī)硪黄猵ython 打印出所有的對象/模塊的屬性(實(shí)例代碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Python?數(shù)據(jù)可視化超詳細(xì)講解折線圖的實(shí)現(xiàn)

    Python?數(shù)據(jù)可視化超詳細(xì)講解折線圖的實(shí)現(xiàn)

    數(shù)據(jù)可以幫助我們描述這個世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時候,一張漂亮的可視化圖表就足以勝過千言萬語,讓我們來用Python實(shí)現(xiàn)一個可視化的折線圖
    2022-03-03
  • python 批量修改/替換數(shù)據(jù)的實(shí)例

    python 批量修改/替換數(shù)據(jù)的實(shí)例

    今天小編就為大家分享一篇python 批量修改/替換數(shù)據(jù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python給PDF添加水印的代碼步驟

    Python給PDF添加水印的代碼步驟

    在本教程中,我們將學(xué)習(xí)如何使用 Python 編程語言以及 PyPDF2 和 reportlab 庫來向 PDF 文檔中添加水印,水印通常用于標(biāo)記文檔的版權(quán)信息、保密級別或其他重要通知,需要的朋友可以參考下
    2025-02-02
  • Python處理JSON數(shù)據(jù)并生成條形圖

    Python處理JSON數(shù)據(jù)并生成條形圖

    本文詳細(xì)介紹如何利用Python進(jìn)行數(shù)據(jù)分析,嘗試處理一份JSON數(shù)據(jù)并生成條形圖的過程,有需要的朋友們可以參考學(xué)習(xí)。
    2016-08-08
  • 跟老齊學(xué)Python之字典,你還記得嗎?

    跟老齊學(xué)Python之字典,你還記得嗎?

    在python中,也有一種數(shù)據(jù)與此相近,不僅相近,這種數(shù)據(jù)的名稱就叫做dictionary,翻譯過來是字典,類似于前面的int/str/list,這種類型數(shù)據(jù)名稱是:dict
    2014-09-09

最新評論

咸宁市| 景东| 衡东县| 永嘉县| 会理县| 浪卡子县| 论坛| 德格县| 无为县| 常德市| 古交市| 宿迁市| 老河口市| 灵武市| 淮阳县| 石屏县| 景东| 东至县| 新安县| 化州市| 揭西县| 阜康市| 拉萨市| 永靖县| 沿河| 长兴县| 平定县| 车致| 腾冲县| 磴口县| 喀喇| 孟村| 大姚县| 玉环县| 通江县| 邳州市| 黔江区| 滦平县| 吉林市| 南陵县| 个旧市|