[Python圖像處理] 一.圖像處理基礎(chǔ)知識及OpenCV入門函數(shù)

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

      該系列文章是講解Python OpenCV圖像處理知識,前期主要講解圖像入門、OpenCV基礎(chǔ)用法,中期講解圖像處理的各種算法,包括圖像銳化算子、圖像增強(qiáng)技術(shù)、圖像分割等,后期結(jié)合深度學(xué)習(xí)研究圖像識別、圖像分類應(yīng)用。希望文章對您有所幫助,如果有不足之處,還請海涵~

      該系列在github所有源代碼:

      https://github.com/eastmountyxz/ImageProcessing-Python

      本篇文章作為第一篇,將講解圖像處理基礎(chǔ)知識和OpenCV入門函數(shù),知識點(diǎn)如下:

      1.圖像基礎(chǔ)知識

      2.OpenCV讀寫圖像

      3.OpenCV像素處理

      PS: 文章也學(xué)習(xí)了網(wǎng)易云高登教育的知識,推薦大家學(xué)習(xí)。

      一.圖像基礎(chǔ)知識

      圖像都是由像素(pixel)構(gòu)成的,即圖像中的小方格,這些小方格都有一個(gè)明確的位置和被分配的色彩數(shù)值,而這些一小方格的顏色和位置就決定該圖像所呈現(xiàn)出來的樣子。像素是圖像中的最小單位,每一個(gè)點(diǎn)陣圖像包含了一定量的像素,這些像素決定圖像在屏幕上所呈現(xiàn)的大小。

      圖像通常包括二值圖像、灰度圖像和彩色圖像。

      1.二值圖像

      二值圖像中任何一個(gè)點(diǎn)非黑即白,要么為白色(像素為255),要么為黑色(像素為0)。將灰度圖像轉(zhuǎn)換為二值圖像的過程,常通過依次遍歷判斷實(shí)現(xiàn),如果像素>=127則設(shè)置為255,否則設(shè)置為0。

      2.灰度圖像

      灰度圖像除了黑和白,還有灰色,它把灰度劃分為256個(gè)不同的顏色,圖像看著也更為清晰。將彩色圖像轉(zhuǎn)換為灰度圖是圖像處理的最基本預(yù)處理操作,通常包括下面幾種方法:

      (1) 浮點(diǎn)算法:Gray=R0.3+G0.59+B0.11

      (2) 整數(shù)方法:Gray=(R30+G59+B11)/100

      [Python圖像處理] 一.圖像處理基礎(chǔ)知識及OpenCV入門函數(shù)

      (3) 移位方法:Gray=(R28+G151+B77)>>8;

      (4) 平均值法:Gray=(R+G+B)/3;(此程序采用算法)

      (5) 僅取綠色:Gray=G;

      (6) 加權(quán)平均值算法:根據(jù)光的亮度特性,公式: R=G=B=R0.299+G*0.587+B0.144

      通過上述任一種方法求得Gray后,將原來的RGB(R,G,B)中的R,G,B統(tǒng)一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。改變象素矩陣的RGB值,來達(dá)到彩色圖轉(zhuǎn)變?yōu)榛叶葓D。

      3.彩色圖像

      彩色圖像是RGB圖像,RGB表示紅、綠、藍(lán)三原色,計(jì)算機(jī)里所有顏色都是三原色不同比例組成的,即三色通道。

      二.OpenCV讀寫圖像

      本文主要使用Python2.7和OpenCV進(jìn)行講解,首先調(diào)用"pip install opencv-python"安裝OpenCV庫,如下圖所示:

      1.讀入圖像

      OpenCV讀圖像主要調(diào)用下面函數(shù)實(shí)現(xiàn):

      img = cv2.imread(文件名,[,參數(shù)])

      參數(shù)(1) cv2.IMREAD_UNCHANGED (圖像不可變)

      參數(shù)(2) cv2.IMREAD_GRAYSCALE (灰度圖像)

      參數(shù)(3) cv2.IMREAD_COLOR (讀入彩色圖像)

      參數(shù)(4) cv2.COLOR_BGR2RGB (圖像通道BGR轉(zhuǎn)成RGB)

      2.顯示圖像

      顯示圖像調(diào)用函數(shù)如下:

      cv2.imshow(窗口名, 圖像名)

      3.窗口等待

      調(diào)用函數(shù)如下:

      cv2.waitKey(delay)

      鍵盤綁定函數(shù),共一個(gè)參數(shù),表示等待毫秒數(shù),將等待特定的幾毫秒,看鍵盤是否有輸入,返回值為ASCII值。如果其參數(shù)為0,則表示無限期的等待鍵盤輸入;參數(shù)>0表示等待delay毫秒;參數(shù)<0表示等待鍵盤單擊。

      4.刪除所有窗口

      調(diào)用函數(shù)如下:

      cv2.destroyAllWindows() 刪除所有窗口

      cv2.destroyWindows() 刪除指定的窗口

      5.寫入圖片

      調(diào)用函數(shù)如下:

      retval = cv2.imwrite(文件地址, 文件名)

      下面代碼是讀入圖片并顯示保存。

      # -*- coding:utf-8 -*- import cv2 #讀取圖片 img = cv2.imread("test.jpg") #顯示圖像 cv2.imshow("Demo", img) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() #寫入圖像 cv2.imwrite("testyxz.jpg", img)

      輸出結(jié)果如下圖所示,并且在文件夾下保存了一張名為“testyxz.jpg”的圖像。

      如果代碼中沒有watiKey(0)函數(shù),則運(yùn)行結(jié)果如下圖所示:

      同時(shí)

      可以對代碼進(jìn)行升級,如下所示:

      #無限期等待輸入 k=cv2.waitKey(0) #如果輸入ESC退出 if k==27: cv2.destroyAllWindows()

      三.OpenCV像素處理

      1.讀取像素

      灰度圖像直接返回灰度值,彩色圖像則返回B、G、R三個(gè)分量。注意OpenCV讀取圖像是BGR存儲顯示,需要轉(zhuǎn)換為RGB再進(jìn)行圖像處理。

      灰度圖像:返回值 = 圖像(位置參數(shù))

      eg: test=img[88,42]

      彩色圖像:返回值 = 圖像[位置元素, 0 | 1 | 2 ] 獲取BGR三個(gè)通道像素

      eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]

      2.修改圖像

      修改圖像如果是灰度圖像則直接賦值新像素即可,彩色圖像依次給三個(gè)值賦值即可。

      灰度圖像:

      img[88,142] = 255

      彩色圖像:

      img[88,142, 0] = 255

      img[88,142, 1] = 255

      img[88,142, 2] = 255

      彩色圖像:方法二

      img[88,142] = [255, 255, 255]

      下面代碼是獲取像素及修改的操作。

      # -*- coding:utf-8 -*- import cv2 #讀取圖片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) test = img[88,142] print test img[88,142] = [255, 255, 255] print test #分別獲取BGR通道像素 blue = img[88,142,0] print blue green = img[88,142,1] print green red = img[88,142,2] print red #顯示圖像 cv2.imshow("Demo", img) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() #寫入圖像 cv2.imwrite("testyxz.jpg", img)

      輸出結(jié)果如下所示:

      [158 107 64]

      [255 255 255]

      255

      255

      255

      下面代碼是將行為100到200、列150到250的像素區(qū)域設(shè)置為白色。

      # -*- coding:utf-8 -*- import cv2 #讀取圖片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) #該區(qū)域設(shè)置為白色 img[100:200, 150:250] = [255,255,255] #顯示圖像 cv2.imshow("Demo", img) #等待顯示 cv2.waitKey(0) cv2.destroyAllWindows() #寫入圖像 cv2.imwrite("testyxz.jpg", img)

      運(yùn)行結(jié)果如下圖所示:

      希望文章對大家有所幫助,如果有錯(cuò)誤或不足之處,還請海涵。再次感謝您的關(guān)注,初來在華為云社區(qū)分享知識,初來乍到,還請多多指教。

      原文地址:https://blog.csdn.net/Eastmount/article/details/81748802

      遺憾,讓我們懂得完美。

      逝去,讓我們不斷前行。

      她夜色中的身姿是那么的美。

      (By:娜璋之家 Eastmount 2021-06-12 夜于武漢)

      OpenCV Python 圖像處理

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

      上一篇:物聯(lián)網(wǎng)網(wǎng)關(guān)神器 Kong ( 三 ) - 圖形化管理界面 Konga
      下一篇:漢能面試-互聯(lián)網(wǎng)老辛根據(jù)學(xué)員面試錄音整理
      相關(guān)文章
      亚洲综合久久成人69| 亚洲日韩国产精品第一页一区| 亚洲AV无码第一区二区三区| 亚洲av日韩av欧v在线天堂| 亚洲成AV人影片在线观看| 亚洲国产成a人v在线观看| 亚洲精品日韩中文字幕久久久| 亚洲国产综合专区电影在线 | 在线观看亚洲AV日韩A∨| 亚洲一区中文字幕在线电影网 | 亚洲国产免费综合| 亚洲国产婷婷综合在线精品 | 亚洲熟妇色自偷自拍另类| 夜夜亚洲天天久久| 亚洲综合图片小说区热久久| 亚洲美女aⅴ久久久91| 亚洲性无码av在线| 亚洲videos| 亚洲熟妇AV乱码在线观看| 亚洲精品无码中文久久字幕| 亚洲大尺度无码无码专线一区| 欧美激情综合亚洲一二区| 九月婷婷亚洲综合在线| 亚洲第一页日韩专区| 久久久久亚洲av成人无码电影| 国产亚洲老熟女视频| 亚洲精品乱码久久久久久| 亚洲va中文字幕无码久久不卡 | 精品亚洲国产成人av| 亚洲高清偷拍一区二区三区| 国产精品亚洲二区在线观看| 亚洲精品亚洲人成在线观看| 久久精品国产亚洲av四虎| 亚洲邪恶天堂影院在线观看| 亚洲成无码人在线观看| 中文字幕在线日亚洲9| 亚洲AV噜噜一区二区三区| 亚洲高清最新av网站| 亚洲韩国精品无码一区二区三区| 亚洲电影免费在线观看| 亚洲成人福利在线|