衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python+OpenCV 十幾行代碼模仿世界名畫

人工智能精選 ? 2018-10-15 15:50 ? 次閱讀

現(xiàn)在很多人都喜歡拍照(自拍)。有限的濾鏡和裝飾玩多了也會(huì)膩,所以就有 APP 提供了模仿名畫風(fēng)格的功能,比如 prisma、versa 等,可以把你的照片變成梵高、畢加索、蒙克等大師的風(fēng)格。

這種功能叫做“圖像風(fēng)格遷移”,幾乎都是基于 CVPR 2015 的論文《A Neural Algorithm of Artistic Style》和 ECCV 2016 的論文《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》中提出的算法,以及后續(xù)相關(guān)研究的基礎(chǔ)上開(kāi)發(fā)出來(lái)的。

通俗來(lái)講,就是借助于神經(jīng)網(wǎng)絡(luò),預(yù)先將名畫中的風(fēng)格訓(xùn)練成出模型,在將其應(yīng)用在不同的照片上,生成新的風(fēng)格化圖像。

而因?yàn)樯窠?jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)方面的應(yīng)用越來(lái)越廣,著名的視覺(jué)開(kāi)發(fā)庫(kù) OpenCV 在 3.3 版本中正式引入DNN(深度神經(jīng)網(wǎng)絡(luò)),支持 Caffe、TensorFlow、Torch/PyTorch 等主流框架的模型,可用以實(shí)現(xiàn)圖像的識(shí)別、檢測(cè)、分類、分割、著色等功能。

我最近才發(fā)現(xiàn)在 OpenCV 的 Sample 代碼中就有圖像風(fēng)格遷移的 Python 示例(原諒我的后知后覺(jué)),是基于 ECCV 2016 論文中的網(wǎng)絡(luò)模型實(shí)現(xiàn)。所以,即使作為人工智能的菜鳥(niǎo),也可以拿別人訓(xùn)練好的模型來(lái)玩一玩,體會(huì)下神經(jīng)網(wǎng)絡(luò)的奇妙。

(相關(guān)代碼和模型的獲取見(jiàn)文末)

OpenCV 官方代碼地址:https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/fast_neural_style.py

目錄下通過(guò)執(zhí)行命令運(yùn)行代碼:

pythonfast_neural_style.py--modelstarry_night.t7

model參數(shù)是提供預(yù)先訓(xùn)練好的模型文件路徑,OpenCV 沒(méi)有提供下載,但給出的參考項(xiàng)目 https://github.com/jcjohnson/fast-neural-style 中可以找到

其他可設(shè)置參數(shù)有:

  • input可以指定原始圖片/視頻,如果不提供就默認(rèn)使用攝像頭實(shí)時(shí)采集。

  • width、height,調(diào)整處理圖像的大小,設(shè)置小一點(diǎn)可以提高計(jì)算速度。在我自己的電腦上,300x200 的轉(zhuǎn)換視頻可以達(dá)到 15 幀/秒。

  • median_filter中值濾波的窗口大小,用來(lái)對(duì)結(jié)果圖像進(jìn)行平滑處理,這個(gè)對(duì)結(jié)果影響不大。

執(zhí)行后的效果(取自 jcjohnson/fast-neural-style):

原始圖像

ECCV16 models

instance_norm models

核心代碼其實(shí)很短,就是加載模型 -> 讀取圖片 -> 進(jìn)行計(jì)算 -> 輸出圖片,我在官方示例基礎(chǔ)上進(jìn)一步簡(jiǎn)化了一下:

importcv2
#加載模型
net=cv2.dnn.readNetFromTorch('the_scream.t7')
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV);
#讀取圖片
image=cv2.imread('test.jpg')
(h,w)=image.shape[:2]
blob=cv2.dnn.blobFromImage(image,1.0,(w,h),(103.939,116.779,123.680),swapRB=False,crop=False)
#進(jìn)行計(jì)算
net.setInput(blob)
out=net.forward()
out=out.reshape(3,out.shape[2],out.shape[3])
out[0]+=103.939
out[1]+=116.779
out[2]+=123.68
out/=255
out=out.transpose(1,2,0)
#輸出圖片
cv2.imshow('Styledimage',out)
cv2.waitKey(0)

執(zhí)行結(jié)果:

另外還改了個(gè)多效果實(shí)時(shí)對(duì)比的版本(計(jì)算量大了,很卡頓),也一并上傳在代碼中。

PS:前兩天看趙雷演唱會(huì)的時(shí)候我還說(shuō):他演唱會(huì)的背景 MV 大量使用了 圖像二值化、邊緣檢測(cè) 等操作,讓我想到以前數(shù)字圖像處理課的大作業(yè)……現(xiàn)在圖像風(fēng)格遷移的效率達(dá)到了實(shí)時(shí),想必以后也會(huì)經(jīng)常被使用吧

參考文獻(xiàn):
fast-neural-style jcjohnson
https://github.com/jcjohnson/fast-neural-style

Perceptual Losses for Real-Time Style Transfer and Super-Resolution(ECCV 2016)
Justin Johnson, Alexandre Alahi, Li Fei-Fei

A Neural Algorithm of Artistic Style(CVPR 2015)
Leon A. Gatys, Alexander S. Ecker, Matthias Bethge

Neural Style Transfer with OpenCV - Adrian Rosebrock
https://www.pyimagesearch.com/2018/08/27/neural-style-transfer-with-opencv/

無(wú)需GPU,只用OpenCV和Python實(shí)現(xiàn)圖像和視頻的風(fēng)格遷移(譯) - 論智 Bing
https://mp.weixin.qq.com/s/KXA6b-ckttBSQR5DvS3SBg

可以用 Python 編程語(yǔ)言做哪些神奇好玩的事情?- 知乎回答 @楊航鋒
https://www.zhihu.com/question/21395276/answer/115805610

用processing代碼模仿梵高畫楊超越 - 算法藝術(shù)實(shí)驗(yàn)室AALab Alice
https://mp.weixin.qq.com/s/UOVww7IgCteuQ6Bsbf0yEA

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4779

    瀏覽量

    101172
  • 機(jī)器視覺(jué)
    +關(guān)注

    關(guān)注

    162

    文章

    4406

    瀏覽量

    120734
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41556
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用Python+OpenCV處理圖片

    如果給你一張圖片作為背景,另外一張圖片中的物體作為前景圖,要把前景圖中的物體疊加布置到背景圖的中間位置,并且前景圖中的物體需要在背景圖中有旋轉(zhuǎn)和投影,怎么處理?
    的頭像 發(fā)表于 12-23 15:54 ?279次閱讀

    【AI實(shí)戰(zhàn)項(xiàng)目】基于OpenCV的“顏色識(shí)別項(xiàng)目”完整操作過(guò)程

    適用于哪些場(chǎng)景,然后通過(guò)Python編寫代碼來(lái)實(shí)現(xiàn)這些算法,并應(yīng)用于實(shí)際項(xiàng)目中,實(shí)現(xiàn)圖像的檢測(cè)、識(shí)別、分類、定位、測(cè)量等目標(biāo)。華清遠(yuǎn)見(jiàn)【python+OpenCV
    的頭像 發(fā)表于 12-09 16:42 ?485次閱讀
    【AI實(shí)戰(zhàn)項(xiàng)目】基于<b class='flag-5'>OpenCV</b>的“顏色識(shí)別項(xiàng)目”完整操作過(guò)程

    RK3568 + OpenCV 會(huì)碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實(shí)驗(yàn)

    一、實(shí)驗(yàn)?zāi)康?本節(jié)視頻的目的是了解OpenCV的作用并通過(guò)OpenCV實(shí)現(xiàn)畫線。 二、實(shí)驗(yàn)原理 OpenCV 開(kāi)放源代碼計(jì)算機(jī)視覺(jué)庫(kù) OpenCV
    發(fā)表于 12-03 14:09

    一個(gè)月速成python+OpenCV圖像處理

    適用于哪些場(chǎng)景,然后通過(guò)Python編寫代碼來(lái)實(shí)現(xiàn)這些算法,并應(yīng)用于實(shí)際項(xiàng)目中,實(shí)現(xiàn)圖像的檢測(cè)、識(shí)別、分類、定位、測(cè)量等目標(biāo)。本文將介紹一個(gè)高效學(xué)習(xí)Python+O
    的頭像 發(fā)表于 11-29 18:27 ?197次閱讀
    一個(gè)月速成<b class='flag-5'>python+OpenCV</b>圖像處理

    十幾種格力空調(diào)故障代碼詳解

    十幾種格力空調(diào)故障代碼詳解,查表一目了然
    發(fā)表于 11-27 15:15 ?0次下載

    如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測(cè)--基于米爾NXP i.MX93開(kāi)發(fā)板

    提供了一個(gè)非常簡(jiǎn)單的接口,用于相機(jī)捕捉一個(gè)視頻(我用的電腦內(nèi)置攝像頭) 1、安裝python3-opencv apt install python3-opencv 2、查看攝像頭支持的格式與分辨率
    發(fā)表于 11-15 17:58

    手寫圖像模板匹配算法在OpenCV中的實(shí)現(xiàn)

    OpenCV中的模板匹配是支持基于NCC相似度查找的,但是不是很好用,一個(gè)主要的原因是查找最大閾值,只能匹配一個(gè),自己比對(duì)閾值,又導(dǎo)致無(wú)法正確設(shè)定閾值范圍,所以問(wèn)題很多。于是我重新寫了純Python版本的NCC圖像模板匹配的代碼
    的頭像 發(fā)表于 11-11 10:12 ?326次閱讀
    手寫圖像模板匹配算法在<b class='flag-5'>OpenCV</b>中的實(shí)現(xiàn)

    使用Python進(jìn)行圖像處理

    下面是一個(gè)關(guān)于使用Python幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?279次閱讀
    使用<b class='flag-5'>Python</b>進(jìn)行圖像處理

    Python常用函數(shù)大全

    Python 世界里,有一些寶藏函數(shù)和模塊,它們可以讓你編程更輕松、代碼更高效。這篇文章將帶你一一認(rèn)識(shí)這些神器,讓你的開(kāi)發(fā)生活瞬間輕松不少!
    的頭像 發(fā)表于 10-27 17:20 ?346次閱讀

    INA337 RG設(shè)置的是2KΩ,結(jié)果測(cè)量的卻是十幾MΩ,為什么?

    INA337 RG 阻值出現(xiàn)問(wèn)題,我設(shè)置的是2KΩ,結(jié)果測(cè)量的卻是十幾MΩ,輸入端檢測(cè)到差模信號(hào),輸出只有噪聲,電路圖如下,之前已經(jīng)驗(yàn)證過(guò)了,換了塊板子就有
    發(fā)表于 08-30 08:35

    OpenCV圖像識(shí)別C++代碼

    安裝OpenCV庫(kù) 首先,您需要在您的計(jì)算機(jī)上安裝OpenCV庫(kù)。您可以從OpenCV官網(wǎng)下載預(yù)編譯的庫(kù)或從源代碼編譯。安裝完成后,確保將OpenC
    的頭像 發(fā)表于 07-16 10:42 ?2449次閱讀

    opencv-pythonopencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?1404次閱讀

    基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)

    基于OpenCV的人臉識(shí)別系統(tǒng)是一個(gè)復(fù)雜但功能強(qiáng)大的系統(tǒng),廣泛應(yīng)用于安全監(jiān)控、人機(jī)交互、智能家居等多個(gè)領(lǐng)域。下面將詳細(xì)介紹基于OpenCV的人臉識(shí)別系統(tǒng)的基本原理、實(shí)現(xiàn)步驟,并附上具體的代碼示例。
    的頭像 發(fā)表于 07-11 15:37 ?1.5w次閱讀

    ESP32S3進(jìn)入低功耗模式后十幾秒就自動(dòng)重啟,一直循環(huán)十幾秒重啟一次,怎么解決?

    on APP CPU. I (205) TAG: 由0喚醒 I (205) TAG: 進(jìn)入低功耗 問(wèn)題如下: 進(jìn)入低功耗模式后十幾秒就自動(dòng)重啟,一直循環(huán)十幾秒重啟一次,重啟打印都是“由0喚醒
    發(fā)表于 06-06 06:42

    STM32G030 ADC開(kāi)啟后STOP模式多十幾微安電流,為什么?

    STM32G030 ADC開(kāi)啟后 STOP模式 多十幾微安電流,加了ADC1_COMMON->CCR= ~(ADC_CCR_VBATEN | ADC_CCR_TSEN | ADC_CCR_VREFEN | ADC_CCR_PRESC);后能降10ua
    發(fā)表于 03-20 08:06
    博彩百家乐官网规则| 赌博百家乐官网弱点| 博彩网址| 都坊百家乐的玩法技巧和规则 | 威尼斯人娱乐城投注| 百家乐网站赌博| 百家乐官网桌套装| 申请百家乐官网会员送彩金| 老牌全讯网| 大发888娱乐场下载英皇国际| 百家乐最新破| 百家乐出千赌具| 百家乐官网技巧开户| 百家乐官网视频游戏账号| 在线棋牌| 决胜德州扑克刷金币| 威尼斯人娱乐城 2013十一月九问好| 百家乐赌博技巧大全| 百家乐怎么玩高手| 狮威百家乐官网的玩法技巧和规则| 百家乐官网双龙出海注码法| 澳门百家乐官网技巧皇冠网| 百家乐官网玩法秘决| 石阡县| 海王星| 大发888 网站被攻击了| 威尼斯人娱乐场地址| 免费百家乐的玩法技巧和规则| 诚信百家乐平台| 百家乐游戏机出千| 女性做生意的风水| 黄金城百家乐官网手机版| 无锡百家乐官网的玩法技巧和规则| 百家乐官网赌场优势| 百家乐官网视频游戏冲值| 百家乐官网规则澳门| 网上百家乐官网新利| 皇冠网游戏小说| 新星娱乐城| 黄金城赌场| 贵南县|