99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀幾行代碼,讓黑白老照片重獲新生
幾行代碼,讓黑白老照片重獲新生
2022-07-15
收藏

作者:閑歡

來源:Python 技術(shù)

大家好,我是閑歡,今天我們繼續(xù)肝!

這幾年抖音真的是火得深入到大街小巷,給無數(shù)人帶來了可觀的收入。

這其中有一個細(xì)分品類是修復(fù)老照片,內(nèi)容就是發(fā)布一張老照片修復(fù)后的效果呈現(xiàn),流量還很不錯。

幾行代碼,讓黑白老照片重獲新生

老照片容易引起人的共鳴,很多人看到老照片尤其人物會聯(lián)想到自己的某些場景、某些親人,紀(jì)念以及追思,意義重大,甚至有人通過修復(fù)老照片,找到失散多年的親人...

據(jù)說引流到淘寶店鋪,一年營收千萬,看得我直流口水,心想要是我掌握這個技術(shù),是不是可以大賺一筆,從此不再卷程序,做一只躺平的海象!

今天偶然看到一個開源的 Git 項目,主題就是修復(fù)老照片,給老照片上色,效果還真不錯。

這個項目就是 DeOldify ,在 GitHub 上獲得了 15.2k 的小星星,可謂非常火爆了。我甚至在想,那些淘寶店鋪的鋪主是不是利用這個項目在干活賺錢(疑惑臉)?

快速體驗

作者給我們提供了一個多語言版本的接口,調(diào)用這個接口我們可以快速地使用項目的能力,來為老照片著色。

我們先來通過這個簡單的接口體驗一下項目的強大。

import requests
r = requests.post( "https://api.deepai.org/api/colorizer",
    files={ 'image': open('/path/to/your/file.jpg', 'rb'),
    },
    headers={'api-key': 'quickstart-QUdJIGlzIGNvbWluZy4uLi4K'}
) print(r.json())

運行這段代碼前,請將圖片路徑換成自己本地的老照片路徑。

我這里隨意使用了一張老照片,原照片是這樣的:

幾行代碼,讓黑白老照片重獲新生

運行程序,會在控制臺打印一個著色后的照片路徑,復(fù)制路徑到瀏覽器,我們可以看到著色后的照片:

幾行代碼,讓黑白老照片重獲新生

驚呆了有木有,這效果杠杠滴!

除了獲取本地的照片,進行著色,還可以獲取網(wǎng)絡(luò)上的照片。我隨意在網(wǎng)絡(luò)上找了一張黑白照片:

幾行代碼,讓黑白老照片重獲新生

然后使用接口程序:

import requests
r = requests.post( "https://api.deepai.org/api/colorizer",
    data={ 'image': 'https://pics0.baidu.com/feed/43a7d933c895d143712f08474bd47c0b5aaf0723.jpeg',
    },
    headers={'api-key': 'quickstart-QUdJIGlzIGNvbWluZy4uLi4K'}
) print(r.json())

運行程序,靜待數(shù)秒之后,控制臺會打印輸出結(jié)果:

幾行代碼,讓黑白老照片重獲新生

這臉蛋頓時就紅潤起來了!但是有些細(xì)節(jié)還是沒處理好。

總結(jié)

這里只是介紹了 DeOldify 最簡單的使用方法,只需要幾行代碼,但是 DeOldify 這么受歡迎,絕對不是這么簡單,它背后的原理是非常專業(yè),非常復(fù)雜的,有興趣地可以去它的主頁研究一下,它還給進階者提供了三個不同的訓(xùn)練庫,可以將它們下載下來,結(jié)合源碼自己設(shè)置參數(shù)進行調(diào)試。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }