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

Python+OpenCV實(shí)現(xiàn)黑白老照片上色功能

 更新時(shí)間:2023年02月15日 08:42:40   作者:木木子學(xué)python  
我們都知道,有很多經(jīng)典的老照片,受限于那個(gè)時(shí)代的技術(shù),只能以黑白的形式傳世。盡管黑白照片別有一番風(fēng)味,但是彩色照片有時(shí)候能給人更強(qiáng)的代入感。本文就來用Python和OpenCV實(shí)現(xiàn)老照片上色功能,需要的可以參考一下

導(dǎo)語

我們都知道,有很多經(jīng)典的老照片,受限于那個(gè)時(shí)代的技術(shù),只能以黑白的形式傳世。盡管黑白照片別有一番風(fēng)味,但是彩色照片有時(shí)候能給人更強(qiáng)的代入感。今天在這里給大家提供一種給黑白照片上色的方法,盡管無法還原當(dāng)時(shí)真實(shí)的顏色,但確實(shí)可以達(dá)到后期者的心中所想的顏色。

當(dāng)然,除了讓老照片變成彩色這一用途之外,還可以將現(xiàn)時(shí)的一些黑白照片自行染上彩色,完全按照自己的想法來上色,再和彩色的原圖進(jìn)行對(duì)比,也不失為一種有趣的玩法。

——小故事

年前在家中進(jìn)行過年春節(jié)大掃除的時(shí)候,意外發(fā)現(xiàn)了爺爺奶奶年輕時(shí)的照片,只不過當(dāng)時(shí)的拍攝技術(shù)還不發(fā)達(dá),出來的相片都是黑白色的。所以我想將它們還原成彩色,給他們一個(gè)驚喜!

我不是敲代碼的蠻,于是今天在情人節(jié)這天偷偷把老照片進(jìn)行了一個(gè)色彩修復(fù),這次嘗試還別說,親測了一下效果感覺效果還不錯(cuò),于是今天打算將它們分享給有同樣想法的你們。

舊時(shí)代的爺爺奶奶、外公外婆的照片都可以進(jìn)行一個(gè)色彩修復(fù)哦,超驚艷滴~

如果你也想知道黑白照片還原成彩色怎么弄的話,就趕緊跟著我的步驟一步步操作起來吧,過程并不繁瑣,就算你是修圖小白也可以輕松駕馭?。ㄖ灰銜?huì)代碼一切皆有可能~厚臉皮.jpg)

利用圖像處理技術(shù),基于數(shù)字化存儲(chǔ)的玻璃底板圖像自動(dòng)生成盡量非虛化的彩色的圖像。從原始圖像文件中分割提取三個(gè)彩色通道圖像,將它們對(duì)齊并彼此疊加在一起,最終形成一張RGB彩色的圖像。

一、環(huán)境準(zhǔn)備

 1)運(yùn)行環(huán)境 

 本文用到的環(huán)境如下—— 

 Python3、Pycharm社區(qū)版,第三方模塊:Opencv、numpy。

部分自帶的模塊只要安裝完 Python就可以直接使用了,需要安裝 的庫的話看教程下

 模塊安裝:

pip install +模塊名 鏡像源安裝:pip install -i https://pypi.douban.com/simple/+模塊名 

 (之前有說過安裝報(bào)錯(cuò)的幾種方式跟解決方法,不會(huì)安裝的可以去看下,還有很多國內(nèi)鏡像源也有文章的) 

 圖片文本素材等——

都是一些老照片,大家可以隨便準(zhǔn)備一些哈,當(dāng)然需要完整的素材圖片跟源碼的文末找我即可!

二、代碼展示

1) fixTif.py: tif圖像的修復(fù),使用的是openCV內(nèi)置的高斯金字塔

import numpy as np
import cv2 as cv

def img_translate(img, tx, ty):
    """對(duì)圖像進(jìn)行平移"""
    heigh, width = img.shape[:2]
    m = np.float32([[1, 0, tx], [0,1, ty]])
    res = cv.warpAffine(img, m, (width, heigh))
    return res

def ssd(I1, I2):
    """ssd函數(shù),衡量顏色通道是否對(duì)齊"""
    return np.sum((I1 - I2)*(I1 - I2))


def find_xy(img1, g):
    """找到最佳的平移參數(shù),并對(duì)該顏色通道圖片進(jìn)行平移"""
    # 初始化
    loss = ssd(img1, g)
    img = img1
    u = 0
    v = 0
    # 根據(jù)ssd函數(shù)尋找最佳的對(duì)齊位置
    for i in range(-20, 30):
        for j in range(-20, 30):
            img2 = img_translate(img1, i, j)
            loss1 = ssd(img2, g)
            if loss > loss1:
                loss = loss1
                img = img2
                u = i
                v = j
    print(u, v)
    return img


def readImage(imname):
    """read in the image"""
    im = cv.imread(imname)
    im = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
    return im

def separate(im):
    """separate color channels"""
    # compute the height of each part (just 1/3 of total)
    height = np.floor(im.shape[0] / 3.0).astype(np.int)
    b = im[:height]
    g = im[height: 2 * height]
    r = im[2 * height: 3 * height]
    return b, g, r

def merge(b,g,r):
    """將三個(gè)顏色通道進(jìn)行merge"""
    return cv.merge((b,g,r))

def gaussianPyramid(img):
    """直接使用OpenCV的高斯金字塔進(jìn)行實(shí)現(xiàn)"""
    return cv.pyrDown(img)

if __name__ == '__main__':
    # name of the input file
    #imname = 'images/train.tif'
    imname = 'images/three_generations.tif'
    #imname = 'images/lady.tif'
    #imname = 'images/emir.tif'
    #imname = 'images/icon.tif'
    #imname = 'images/self_portrait.tif'
    #imname = 'images/village.tif'
    #imname = 'images/turkmen.tif'

    im = readImage(imname)
    print(im.shape)
    #cv.imshow("source image", im)

    # 獲取平均切割的三個(gè)顏色通道
    b, g, r = separate(im)

    # 對(duì)三個(gè)顏色通道分別應(yīng)用高斯金字塔
    b = gaussianPyramid(b)
    b = gaussianPyramid(b)
    b = gaussianPyramid(b)

    g = gaussianPyramid(g)
    g = gaussianPyramid(g)
    g = gaussianPyramid(g)

    r = gaussianPyramid(r)
    r = gaussianPyramid(r)
    r = gaussianPyramid(r)

    im_out0 = merge(b, g, r)
    cv.imshow("before", im_out0)
    # 顏色通道平移進(jìn)行對(duì)齊,對(duì)齊的過程中以綠色作為基準(zhǔn)
    b = find_xy(b, g)

    r = find_xy(r, g)
    # 將平移處理后的三通道m(xù)erge,得到處理后的圖片im_out1
    im_out1 = merge(b, g, r)

    # 將修復(fù)后的圖片寫進(jìn)磁盤
    #cv.imwrite('out/after_' + imname[7:], im_out1)
    cv.imshow("after", im_out1)
    #print(im_out1.shape)
    cv.waitKey(0)

三、效果展示

1)黑白照片風(fēng)景上色

2)黑白照片色彩修復(fù)多圖

到此這篇關(guān)于Python+OpenCV實(shí)現(xiàn)黑白老照片上色功能的文章就介紹到這了,更多相關(guān)Python OpenCV黑白老照片上色內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Jupyter notebook 輸出部分顯示不全的解決方案

    Jupyter notebook 輸出部分顯示不全的解決方案

    這篇文章主要介紹了Jupyter notebook 輸出部分顯示不全的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    本文主要介紹了TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式,一種是基于tensor(array),另外一種是迭代器,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python如何實(shí)現(xiàn)API的調(diào)用詳解

    python如何實(shí)現(xiàn)API的調(diào)用詳解

    Web?API是網(wǎng)站的一部分,用于與使用非常具體的URL請(qǐng)求特定信息的程序交互,下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)API的快速調(diào)用指南,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Python圖像處理庫處理步驟

    Python圖像處理庫處理步驟

    這篇文章主要介紹了Python圖像處理探索之Python圖像處理庫,我們將學(xué)習(xí)使用不同的 Python 庫實(shí)現(xiàn)一些常見的圖像處理、變換和可視化技術(shù),這些技術(shù)通??梢杂米鞲鼜?fù)雜的圖像處理任務(wù)的基本預(yù)處理/后處理步驟,需要的朋友可以參考下
    2023-04-04
  • python單元測試框架pytest的使用示例

    python單元測試框架pytest的使用示例

    這篇文章主要介紹了python單元測試框架pytest的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python中from import的使用解讀

    python中from import的使用解讀

    本文總結(jié)了Python中from和import的使用方法,包括導(dǎo)入模塊和導(dǎo)入模塊中的對(duì)象,強(qiáng)調(diào)了模塊和對(duì)象的概念,并給出了具體的使用示例,最后,建議根據(jù)代碼維護(hù)性和團(tuán)隊(duì)編碼風(fēng)格來選擇合適的導(dǎo)入方式
    2025-03-03
  • python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析

    python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)tfrecords文件的寫入讀取及內(nèi)容解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python爬蟲Scrapy框架CrawlSpider原理及使用案例

    Python爬蟲Scrapy框架CrawlSpider原理及使用案例

    這篇文章主要介紹了Python爬蟲Scrapy框架(CrawlSpider),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 分享Pytest fixture參數(shù)傳遞的幾種方式

    分享Pytest fixture參數(shù)傳遞的幾種方式

    這篇文章主要分享的是Pytest fixture參數(shù)傳遞的幾種方式,文章基于python的相關(guān)資料展開對(duì)主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計(jì)示例

    Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計(jì)示例

    這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計(jì),結(jié)合實(shí)例形式較為詳細(xì)的分析了Python針對(duì)雙色球藍(lán)紅球中獎(jiǎng)數(shù)據(jù)分析的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

化州市| 辽阳县| 兴隆县| 监利县| 托克托县| 湖南省| 中牟县| 兴隆县| 台山市| 河间市| 鲁山县| 华阴市| 嘉义县| 高唐县| 肇庆市| 万宁市| 西乌珠穆沁旗| 汉川市| 延津县| 双峰县| 营山县| 徐闻县| 偃师市| 长寿区| 淄博市| 河南省| 界首市| 天峻县| 环江| 泾源县| 汉源县| 乌海市| 澄江县| 武夷山市| 和林格尔县| 雅安市| 通化县| 肇庆市| 卓尼县| 巢湖市| 麻江县|