故事開(kāi)始了,Python 圖像算法取經(jīng)之旅 365 天的第 1 天

      網(wǎng)友投稿 835 2022-05-28

      如果你有想要交流的想法、技術(shù),歡迎在評(píng)論區(qū)留言。

      圖像算法 這個(gè)系列橡皮擦一直不太想寫(xiě),因?yàn)樘y了,對(duì)技術(shù)棧體系是一無(wú)所知的。而且橡皮擦數(shù)學(xué)目前估計(jì)就剩下初二的水平了,承擔(dān)這樣一個(gè)系列博客,想想自己就挺害怕的。

      不過(guò)人想要進(jìn)步,就要跳出自己的舒適圈,挑戰(zhàn)一下有難度的事情。

      這個(gè)系列會(huì)寫(xiě)一年之久,希望有能和橡皮擦堅(jiān)持到最后一天的朋友。

      學(xué)習(xí)者背景描述

      對(duì)橡皮擦自己畫(huà)個(gè)畫(huà)像,如果你比我強(qiáng),你也可以堅(jiān)持到最后一步。

      故事開(kāi)始了,Python 圖像算法取經(jīng)之旅 365 天的第 1 天

      目前我的硬技能只有一個(gè):

      熟悉 Python 語(yǔ)法,對(duì)其比較了解,所以不存在編程語(yǔ)言基礎(chǔ)障礙

      學(xué)習(xí)上的難點(diǎn):

      數(shù)學(xué)基礎(chǔ)差,目前剩余支持停留在二元一次方程階段;

      圖像識(shí)別理論體系不健全,存在走彎路的可能;

      以上是對(duì)自己的簡(jiǎn)單畫(huà)像,概括下來(lái)就是有編程基礎(chǔ),無(wú)任何數(shù)學(xué)基礎(chǔ)。

      總之一句話:

      任何事情都是開(kāi)始之后,才有未來(lái),而不是總在想,一直不敢開(kāi)始。

      說(shuō)干就干,學(xué)習(xí)的過(guò)程是這樣子的。

      每天只能學(xué)習(xí)大概 1 個(gè)小時(shí)左右,畢竟打工人不好持續(xù)輸出,而且我還欠著滾雪球?qū)W Python 那個(gè)專(zhuān)欄呢;

      文章不是每天都更新,可能 2~3 天學(xué)習(xí)到都更新出來(lái);

      因?yàn)闆](méi)有體系,學(xué)習(xí)的過(guò)程會(huì)充滿(mǎn)跳躍性,橡皮擦盡量把過(guò)程忠實(shí)的記錄下來(lái),這些可能都是比較珍貴的學(xué)習(xí)經(jīng)歷;

      因?yàn)橛芯幊坦Φ祝陨婕罢Z(yǔ)言基礎(chǔ)部分,基本都會(huì)略過(guò)。

      本系列課程你能得到

      你可以近距離圍觀一個(gè)老程序員是如何學(xué)習(xí)一套新技能的;

      你可以看一下一個(gè)老網(wǎng)蟲(chóng)是如何查找資料的;

      最終你也可能隨著橡皮擦一起學(xué)會(huì) Python 圖像處理;

      過(guò)程中你可能需要跟著橡皮擦一起去補(bǔ)數(shù)學(xué)基礎(chǔ),沒(méi)準(zhǔn)就學(xué)會(huì)數(shù)學(xué)啦。

      第一天這一個(gè)小時(shí)發(fā)生的事情

      對(duì)于學(xué)習(xí) Python 圖像處理,不能說(shuō)完全陌生,至少在橡皮擦印象中存在一個(gè) OpenCV 可以去弄。

      有印象就是重要的內(nèi)容,先從它下手。

      打開(kāi)搜索引擎,購(gòu)物網(wǎng)站,CSDN 搜索,檢索資料,找一些自己感興趣的內(nèi)容,先點(diǎn)開(kāi)看看,是不是靠譜。

      打開(kāi)百度,看到前面有幾篇文章,下面是官方網(wǎng)址了,先存儲(chǔ)一下官網(wǎng),放心這種東西絕對(duì)有用。

      https://docs.opencv.org/master/d0/de3/tutorial_py_intro.html

      然后習(xí)慣性的把網(wǎng)址后面的東西都刪除掉。

      https://docs.opencv.org

      得到下面的網(wǎng)站,呦呵,不同版本的文檔,存著吧,肯定有用。

      在把網(wǎng)址中的 docs 修改為 www,得到官網(wǎng)地址:https://opencv.org/,順便認(rèn)識(shí)一下 OpenCV 標(biāo)準(zhǔn)寫(xiě)法與 LOGO:

      https://www.cnblogs.com/silence-cho/p/10926248.html

      排名第二的就是 CSDN 的博主的博客了,打開(kāi)看了一下,內(nèi)容比較簡(jiǎn)單,好在他也有一個(gè)小專(zhuān)欄。

      https://blog.csdn.net/sunny2038/category_904451.html

      看完標(biāo)題之后,差點(diǎn)就勸退了橡皮擦,文章有點(diǎn)老了,2013 年,那時(shí)橡皮擦還在北京做開(kāi)發(fā)呢。

      存儲(chǔ)一些待看博客之后,在去 CSDN 搜索查看一下,恩?,看到了大佬。

      注意 CSDN 有個(gè)神奇的操作,可以選擇發(fā)布時(shí)間與博主等級(jí)。

      再次得到了一些文章,下面還有一個(gè)是橡皮擦喜歡做的事情,就是打開(kāi)購(gòu)物網(wǎng)站,搜一下看看有沒(méi)有好書(shū)。

      看了一下,并沒(méi)有特別想買(mǎi)的,你可以直接去當(dāng)當(dāng)網(wǎng)查看一下評(píng)分和書(shū)評(píng),找一找有沒(méi)有自己喜歡的書(shū),不過(guò)一般不建議直接購(gòu)買(mǎi),有些書(shū)還是比較坑的,可以先搞一本電子版的看看,如果覺(jué)得內(nèi)容好,再去購(gòu)買(mǎi)一本實(shí)體的書(shū)籍。

      注意參考資料時(shí)間距離現(xiàn)在越近越好,而且一定要看原版博客的內(nèi)容,別看轉(zhuǎn)載的,轉(zhuǎn)載的格式很容易混亂。

      查找原版博客,可以復(fù)制文章標(biāo)題在搜索引擎查找,很容易找到。

      橡皮擦最后選擇的還是上文提及的搜索引擎排第一的博主,畢竟他是去年發(fā)布的文章,閱讀量還可以。

      1 個(gè)小時(shí)剩余的時(shí)間不多了,接下來(lái)先把 OpenCV 安裝上再說(shuō),使用 pip install opencv-python 安裝即可,安裝包還挺大的,30 多 M。

      安裝完畢先試試手,看看這個(gè)庫(kù)怎么用。

      import cv2 img = cv2.imread("./test_img.jpg") cv2.imshow("img",img)

      運(yùn)行代碼發(fā)現(xiàn)圖片一閃而過(guò),奇怪,核對(duì)參考博文代碼發(fā)現(xiàn),還需要設(shè)置一個(gè)等待條件,當(dāng)按下某些固定按鍵的時(shí)候,關(guān)閉窗口。

      import cv2 img = cv2.imread("./test_img.jpg") cv2.imshow("img", img) key = cv2.waitKey(0) # 按 esc 鍵時(shí),關(guān)閉所有窗口 if key == 27: print(key) cv2.destroyAllWindows()

      先記錄兩個(gè)方法,別求太細(xì)致,先弄懂基本使用規(guī)則即可。

      cv2.imread()

      讀取圖片,關(guān)于其它參數(shù),可以使用 help(cv2.imread) 獲取。只有一個(gè)必填參數(shù)。

      imread(img_path[,flags]) 讀取圖片,返回圖片對(duì)象

      img_path: 圖片的路徑,即使路徑錯(cuò)誤也不會(huì)報(bào)錯(cuò),但打印返回的圖片對(duì)象為 None

      flags:

      cv2.IMREAD_COLOR,讀取彩色圖片,圖片透明性會(huì)被忽略,為默認(rèn)參數(shù),也可以傳入 1

      cv2.IMREAD_GRAYSCALE,按灰度模式讀取圖像,也可以傳入 0

      cv2.IMREAD_UNCHANGED,讀取圖像,包括其 alpha 通道,也可以傳入-1

      除了圖片路徑先掌握以外,其它的先放著,什么彩色圖片,灰度圖像,alpha 通道,都通通不管,后文咱們可以每個(gè)參數(shù)都實(shí)驗(yàn)一下。

      最后在看一下圖片對(duì)象是什么類(lèi)型的。

      import cv2 img = cv2.imread("./test_img.jpg") # help(cv2.imread) print(type(img))

      有點(diǎn)意思,輸出的是 ,與 numpy 還有關(guān)聯(lián),事情越來(lái)越復(fù)雜啦。

      cv2.imshow()

      顯示圖片,從博文中學(xué)到的內(nèi)容如下:

      imshow(window_name,img):顯示圖片,窗口自適應(yīng)圖片大小

      window_name: 指定窗口的名字

      img:顯示的圖片對(duì)象

      可以指定多個(gè)窗口名稱(chēng),顯示多個(gè)圖片

      檢索資料發(fā)現(xiàn) imshow 就是 image show 的縮寫(xiě),貌似已經(jīng)猜到了,還有 imshow 一般用在開(kāi)發(fā)測(cè)試中,在實(shí)際的場(chǎng)景中都是使用第三方的 UI 控件去顯示圖像。

      最后一點(diǎn)需要注意的是:imshow 之后必須有 waitKey 函數(shù),否則顯示窗內(nèi)將一閃而過(guò),不會(huì)駐留屏幕。

      waitKey(millseconds) 鍵盤(pán)綁定事件,阻塞監(jiān)聽(tīng)鍵盤(pán)按鍵,返回一個(gè)數(shù)字(不同按鍵對(duì)應(yīng)的數(shù)字不同) millseconds: 傳入時(shí)間毫秒數(shù),在該時(shí)間內(nèi)等待鍵盤(pán)事件;傳入 0 時(shí),會(huì)一直等待鍵盤(pán)事件 destroyAllWindows(window_name) window_name: 需要關(guān)閉的窗口名字,不傳入時(shí)關(guān)閉所有窗口

      方法的簡(jiǎn)單使用已經(jīng)掌握了,接下來(lái)就要針對(duì)性的學(xué)習(xí)了,先看一下 imread 方法,找到官方手冊(cè)。

      https://docs.opencv.org/4.4.0/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56

      使用方法和注意事項(xiàng)寫(xiě)的清清楚楚,不過(guò)是英文的。

      參數(shù)說(shuō)明如下:

      filename Name of file to be loaded.

      flags Flag that can take values of cv::ImreadModes

      可選參數(shù)為枚舉值:https://docs.opencv.org/4.4.0/d4/da8/group__imgcodecs.html#ga61d9b0126a3e57d9277ac48327799c80

      隨意修改一下,因?yàn)樯衔奶峒傲水?dāng)按灰度模式讀取圖像時(shí),設(shè)置為 0。學(xué)習(xí)效果可直接設(shè)置為 0 ,嘗試一下,結(jié)果得到一個(gè)黑白圖片。

      import cv2 img = cv2.imread("./test_img.jpg", 0) cv2.imshow("第一個(gè)窗口", img) key = cv2.waitKey(0) # 按 esc 鍵時(shí),關(guān)閉所有窗口 if key == 27: print(key) cv2.destroyAllWindows()

      發(fā)現(xiàn)上文彈出的窗口亂碼了,也就是說(shuō) imshow 第一個(gè)參數(shù)設(shè)置為中文會(huì)出現(xiàn)亂碼,如何修改可以直接進(jìn)行簡(jiǎn)單,但是檢索之后還是建議你使用英文吧。因?yàn)闄z索了一下并無(wú)好的解決方案,網(wǎng)上提及的答案是:由于在 OpenCV-Python 包中,imshow 函數(shù)的窗口標(biāo)題是 gbk 編碼,而 Python3 默認(rèn) UTF-8 編碼。但是并不能解決。

      本部分結(jié)束之后,對(duì)于 retval = cv.waitKey([, delay]) 方法,是 imshow 方法要求的,如下圖所示。

      注意按下鍵盤(pán) Ctrl+C 復(fù)制的時(shí)候,窗口自動(dòng)關(guān)閉。

      可以直接在 cv.waitKey 方法中設(shè)置等待 10 秒自動(dòng)關(guān)閉,代碼為 cv2.waitKey(10000)。

      destroyAllWindows 方法,沒(méi)有什么要說(shuō)的,關(guān)閉窗口。

      今天的 OpenCV 尾聲

      本篇博客主要介紹了一下本系列內(nèi)容的書(shū)寫(xiě)背景,同時(shí)配置了一下基本的環(huán)境,案例很簡(jiǎn)單,希望這整個(gè)學(xué)習(xí)過(guò)程能對(duì)你產(chǎn)生幫助。

      如果你想跟博主建立親密關(guān)系,可以關(guān)注同名公眾號(hào)

      夢(mèng)想橡皮擦

      ,近距離接觸一個(gè)逗趣的互聯(lián)網(wǎng)高級(jí)網(wǎng)蟲(chóng)。

      博主 ID:夢(mèng)想橡皮擦,希望大家

      評(píng)論

      OpenCV Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華為云私享會(huì)分享——SQL Server 上云最佳實(shí)踐
      下一篇:Mac系統(tǒng)下使用VirtualBox虛擬機(jī)安裝win7--第四步 安裝虛擬機(jī)硬件擴(kuò)展包支持
      相關(guān)文章
      www.亚洲精品.com| 亚洲成AV人片高潮喷水| 亚洲一区二区三区在线播放 | 久久久久亚洲AV成人无码网站| 国产日韩成人亚洲丁香婷婷| 国产精品亚洲一区二区无码| 亚洲高清国产拍精品熟女| 亚洲中文字幕无码mv| 亚洲H在线播放在线观看H| 亚洲av午夜精品无码专区| 亚洲制服丝袜中文字幕| 国产日本亚洲一区二区三区| 天天爽亚洲中文字幕| 亚洲精品无码成人片久久不卡| 亚洲人成电影网站色| 亚洲国产精品成人AV在线| 色偷偷亚洲第一综合网| 亚洲av成人一区二区三区在线观看| 国产亚洲精品91| 综合偷自拍亚洲乱中文字幕| 国产精品亚洲片在线花蝴蝶| 亚洲电影日韩精品| 国产亚洲AV夜间福利香蕉149| 亚洲五月综合缴情在线观看| 亚洲AV无码一区二区乱孑伦AS | 亚洲AV无码一区二区二三区软件| 亚洲韩国—中文字幕| 亚洲精品中文字幕无码AV| 亚洲国产精品乱码在线观看97| 亚洲卡一卡二卡乱码新区| 亚洲免费综合色在线视频| 日韩亚洲人成在线综合| 亚洲一级特黄无码片| 亚洲AV永久无码精品水牛影视| 色噜噜综合亚洲av中文无码| 亚洲日本国产乱码va在线观看| 激情综合亚洲色婷婷五月APP| 亚洲欧美成aⅴ人在线观看| 国产亚洲Av综合人人澡精品| 亚洲中文字幕在线乱码| 亚洲日本在线观看|