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

詳解Python結(jié)合Genetic?Algorithm算法破解網(wǎng)易易盾拼圖驗(yàn)證

 更新時(shí)間:2022年02月17日 15:07:32   作者:落伍的碼農(nóng)  
很多網(wǎng)站在登錄或者注冊時(shí)都會(huì)遇到拼圖驗(yàn)證碼,這種拼圖驗(yàn)證碼實(shí)際上是多個(gè)小碎片經(jīng)過重新組合成的一張整體。本文將和大家分享一個(gè)基于Python?Genetic?Algorithm的破解拼圖驗(yàn)證碼的辦法,需要的可以參考一下

首先看一下目標(biāo)的驗(yàn)證形態(tài)是什么樣子的

是一種通過驗(yàn)證推理的驗(yàn)證方式,用來防人機(jī)破解的確是很有效果,但是,But,這里面已經(jīng)會(huì)有一些破綻,比如:

(以上是原圖和二值化之后的結(jié)果)

(這是正常圖片)

像劃紅線的這些地方,可以看到有明顯的突變,并且二值化之后邊緣趨于直線,但是正常圖像是不會(huì)有這種這么明顯的突變現(xiàn)象。

初識潘多拉

后來,我去翻閱了機(jī)器視覺的相關(guān)文章和論文,發(fā)現(xiàn)了一個(gè)牛逼的算法,這個(gè)算法就是——Genetic Algorithm遺傳算法,最貼心的的是,作者利用這個(gè)算法實(shí)現(xiàn)了一個(gè)功能,“拼圖自動(dòng)還原”(不是像什么A*算法尋找最優(yōu)路線解那種哈,就是單純的拼圖)項(xiàng)目倉庫地址 首先來介紹下如何使用跑起來這個(gè)項(xiàng)目吧,坑是真的很多,接下來感受一下pyCham的一路報(bào)錯(cuò)! 這里我用的是python3.10的版本,目前是最新的版本 文檔中這一步執(zhí)行是會(huì)報(bào)錯(cuò)的

pip3 install -r requirements.txt

解決方案:單獨(dú)對requirements.txt文件下的每個(gè)包單獨(dú)下載,然后根據(jù)當(dāng)前下載的包的最新版本替換舊版本號。

我目前每個(gè)包最新使用的是這些版本號

全部替換完了之后,再執(zhí)行一次下面的代碼,他就不會(huì)報(bào)錯(cuò)了

pip3 install -r requirements.txt

然后下一步,執(zhí)行下面代碼

pip3 install -e .

進(jìn)入潘多拉

然后我們按照官網(wǎng)的提示來執(zhí)行,先創(chuàng)建一個(gè)拼圖出來,命令是這樣的(這里的文件名我改了)

create_puzzle images/starry.jpg --size=60 --destination=puzzle.jpg

會(huì)發(fā)現(xiàn),好像不行,因?yàn)槲覀儧]有在正確的位置上執(zhí)行,他的腳本位置是在bin文件夾下面,你可能會(huì)遇到如下問題

成功之后的話,會(huì)在bin目錄下生成一個(gè)拼圖圖片

以上是介紹如何生成圖片,接下來是重頭戲,如何還原圖片

gaps --image=puzzle.jpg --generations=20 --population=600

對于參數(shù)的解釋官網(wǎng)是這樣的:

Option : 

--image Path to puzzle(需要被還原的圖片)

--size Puzzle piece size in pixels (拼圖的大?。?/p>

--generations Number of generations for genetic algorithm (遺傳算法的代數(shù))

--population Number of individuals in population

--verbose Show best solution after each generation (顯示每一代后的最佳解決方案)

--save Save puzzle solution as image (拼圖結(jié)果另存為圖像)

先按照官方的走一遍

很好,很舒服,繼續(xù)報(bào)錯(cuò),而且語法拼寫上我們也沒有拼寫錯(cuò),沒關(guān)系!我已經(jīng)幫你找到解決方案了。

python gaps --image=puzzle.jpg --generations=20 --population=600 --size=60  --save

或者你不指定遺傳代數(shù)和人口數(shù)

python gaps --image=puzzle.jpg --size=60 --save

這是完全還原的結(jié)果,至此,我們披荊斬棘從解決項(xiàng)目報(bào)錯(cuò),一路挖坑填坑到demo成功運(yùn)行,到這里我們已經(jīng)成功了60%,接下來就是如何利用這個(gè)項(xiàng)目,去破解網(wǎng)易易盾的推理拼圖驗(yàn)證。

探究潘多拉的秘密

首先看一下項(xiàng)目目錄:

gaps文件夾下面是所有模塊的源碼,作者對各個(gè)基礎(chǔ)功能做了封裝,但是我們想要的功能并不存在,就需要自行閱讀和理解源碼,然后二開實(shí)現(xiàn)自己想要的功能。

我們主要關(guān)注這個(gè)文件individual.py:

我來用大白話給你翻譯一下吧,“在所有排列中,幫你找出最優(yōu)解”

輸出這個(gè)映射,結(jié)果是這樣的,正好是我們想要的東西

下面會(huì)有一個(gè)創(chuàng)建圖像的方法,這是最后得到最優(yōu)解圖像拼接函數(shù)

那么,我們將最后的索引映射取到就OK了!

以下為最優(yōu)解的映射值輸出實(shí)例:

初始化的時(shí)候,新增一個(gè)變量用來存儲最后的結(jié)果

self.pieceMapping = None

自定義一個(gè)函數(shù)

# 返回映射值
def getPieceMapping(self):
        return self.pieceMapping

每次執(zhí)行的時(shí)候,將最優(yōu)解傳遞出去

def to_image(self):
    """Converts individual to showable image"""
    pieces = [piece.image for piece in self.pieces]
    self.pieceMapping = self._piece_mapping
    return image_helpers.assemble_image(pieces, self.rows, self.columns)

以上,就把我們想要的結(jié)果輸出了

調(diào)用:

key為最后的結(jié)果標(biāo)志,value為原始標(biāo)志。

PS:對于極度復(fù)雜的原始圖片創(chuàng)建的拼圖,在還原之后,誤差會(huì)挺大的。

到此這篇關(guān)于詳解Python結(jié)合Genetic Algorithm算法破解網(wǎng)易易盾拼圖驗(yàn)證的文章就介紹到這了,更多相關(guān)Python Genetic Algorithm內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python開發(fā)一個(gè)PDF文本提取工具

    使用Python開發(fā)一個(gè)PDF文本提取工具

    在日常工作中,我們經(jīng)常需要從PDF文檔中提取文本內(nèi)容,雖然市面上有不少相關(guān)工具,但它們要么功能過于復(fù)雜,要么使用不夠方便,本文將介紹如何使用Python開發(fā)一個(gè)簡單實(shí)用的PDF文本提取工具,需要的朋友可以參考下
    2025-02-02
  • python如何實(shí)現(xiàn)全角半角的相互轉(zhuǎn)換

    python如何實(shí)現(xiàn)全角半角的相互轉(zhuǎn)換

    這篇文章主要介紹了python如何實(shí)現(xiàn)全角半角的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python教程之生成器和匿名函數(shù)

    python教程之生成器和匿名函數(shù)

    這篇文章主要為大家介紹了python生成器和匿名函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python庫patchworklib多圖表整合用法示例探究

    python庫patchworklib多圖表整合用法示例探究

    這篇文章主要介紹了python庫patchworklib對齊matplotlib圖表,將多個(gè)圖表的整合為單一圖表用法示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python監(jiān)控進(jìn)程狀態(tài),記錄重啟時(shí)間及進(jìn)程號的實(shí)例

    python監(jiān)控進(jìn)程狀態(tài),記錄重啟時(shí)間及進(jìn)程號的實(shí)例

    今天小編就為大家分享一篇python監(jiān)控進(jìn)程狀態(tài),記錄重啟時(shí)間及進(jìn)程號的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python中使用pymssql庫操作MSSQL數(shù)據(jù)庫

    python中使用pymssql庫操作MSSQL數(shù)據(jù)庫

    這篇文章主要給大家介紹了關(guān)于python中使用pymssql庫操作MSSQL數(shù)據(jù)庫的相關(guān)資料,最近在學(xué)習(xí)python,發(fā)現(xiàn)好像沒有對pymssql的詳細(xì)說明,于是乎把官方文檔學(xué)習(xí)一遍,重要部分做個(gè)歸檔,方便以后查閱,需要的朋友可以參考下
    2023-08-08
  • Hadoop中的Python框架的使用指南

    Hadoop中的Python框架的使用指南

    這篇文章主要介紹了Hadoop中的Python框架的使用指南,Hadoop一般使用復(fù)雜的Java操作,但通過該框架使得Python腳本操作Hadoop成為了可能,需要的朋友可以參考下
    2015-04-04
  • Python安裝第三方庫的3種方法

    Python安裝第三方庫的3種方法

    這篇文章主要介紹了Python安裝第三方庫的3種方法,本文講解了通過setuptools來安裝python模塊、通過pip來安裝python模塊、直接從網(wǎng)上下載下可執(zhí)行文件來安裝三種方法,需要的朋友可以參考下
    2015-06-06
  • 使用Django連接Mysql數(shù)據(jù)庫步驟

    使用Django連接Mysql數(shù)據(jù)庫步驟

    今天小編就為大家分享一篇關(guān)于使用Django連接Mysql數(shù)據(jù)庫步驟,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 在CentOS上配置Nginx+Gunicorn+Python+Flask環(huán)境的教程

    在CentOS上配置Nginx+Gunicorn+Python+Flask環(huán)境的教程

    這篇文章主要介紹了在CentOS上配置Nginx+Gunicorn+Python+Flask環(huán)境的教程,包括安裝supervisor來管理進(jìn)程的用法,整套配下來相當(dāng)實(shí)用,需要的朋友可以參考下
    2016-06-06

最新評論

富阳市| 高陵县| 嘉禾县| 蓬溪县| 辉县市| 长阳| 噶尔县| 鲁甸县| 凤冈县| 托克托县| 西充县| 安国市| 霞浦县| 沙坪坝区| 伊金霍洛旗| 开鲁县| 文登市| 聂拉木县| 门源| 金寨县| 施甸县| 阿克苏市| 永春县| 花垣县| 峨眉山市| 清水县| 图们市| 龙川县| 竹溪县| 应城市| 信丰县| 铜梁县| 旺苍县| 嘉禾县| 景德镇市| 崇州市| 高要市| 夏津县| 东山县| 盘山县| 沙雅县|