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

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

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

圖像處理基礎(chǔ)知識(shí)及OpenCV入門函數(shù)

jf_78858299 ? 來源:抓碼青年 ? 作者:聊聊Python ? 2023-02-08 15:57 ? 次閱讀

一、圖像基礎(chǔ)知識(shí)

圖像都是由像素(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(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庫(kù),如下圖所示:

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í)可以對(duì)代碼進(jìn)行升級(jí),如下所示:

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

三.OpenCV像素處理

1.讀取像素灰度圖像直接返回灰度值,彩色圖像則返回B、G、R三個(gè)分量。注意OpenCV讀取圖像是BGR存儲(chǔ)顯示,需要轉(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] = 255img[88,142, 1] = 255img[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]255255255

下面代碼是將行為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)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像處理
    +關(guān)注

    關(guān)注

    26

    文章

    1268

    瀏覽量

    56374
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41089
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    最新OpenCV專題出爐啦~最全OpenCV教程及各種圖像處理、目標(biāo)跟蹤、識(shí)別案例

    OpenCV基礎(chǔ)知識(shí)及應(yīng)用領(lǐng)域設(shè)計(jì),包含OpenCV教程、OpenCV識(shí)別、OpenCV跟蹤及OpenC
    發(fā)表于 07-06 14:41

    Vivado HLS實(shí)現(xiàn)OpenCV圖像處理的設(shè)計(jì)流程與分析

    本文通過對(duì)OpenCV圖像類型和函數(shù)處理方法的介紹,通過設(shè)計(jì)實(shí)例描述在vivadoHLS中調(diào)用OpenCV庫(kù)
    發(fā)表于 07-08 08:30

    HIFI耳機(jī)基礎(chǔ)知識(shí)入門

    HIFI耳機(jī)基礎(chǔ)知識(shí)入門 一、耳機(jī)是如何分類的? 1、按換能原理(Transducer)分
    發(fā)表于 02-02 11:48 ?3019次閱讀

    OpenCV圖像處理編程研究

    OpenCV是一種用于數(shù)字圖像處理和計(jì)算機(jī)視覺的函數(shù)庫(kù),由Intel微處理器研究實(shí)驗(yàn)室的視覺交互組開發(fā),采用的開發(fā)語言是C++。本文通過學(xué)習(xí)
    發(fā)表于 06-25 17:52 ?0次下載

    最全OpenCV教程及圖像處理、目標(biāo)跟蹤、識(shí)別案例

    本專題主要幫助讀者快速入門 OpenCV,而無需到處搜尋參考資料,為你免除大量自行搜索的時(shí)間,本專題主要給大家介紹OpenCV基礎(chǔ)知識(shí)及應(yīng)用領(lǐng)域設(shè)計(jì),包含
    發(fā)表于 07-06 14:11
    最全<b class='flag-5'>OpenCV</b>教程及<b class='flag-5'>圖像</b><b class='flag-5'>處理</b>、目標(biāo)跟蹤、識(shí)別案例

    ADC入門_基礎(chǔ)知識(shí)

    ADC入門_基礎(chǔ)知識(shí)對(duì)初學(xué)者有很好的幫助。希望大家會(huì)喜歡。
    發(fā)表于 03-11 17:41 ?45次下載

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

    使用opencv進(jìn)行圖像處理_于仕琪,感興趣的可以看看。
    發(fā)表于 05-03 14:45 ?0次下載

    形態(tài)學(xué)圖像處理綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:形態(tài)學(xué)圖像處理綜合示例
    發(fā)表于 06-06 15:52 ?8次下載

    OpenCV3編程入門-源碼例程全集-HoughLinesP函數(shù)

    OpenCV3編程入門-源碼例程全集-HoughLinesP函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?10次下載

    形態(tài)學(xué)圖像處理綜合示例_OpenCV3編程入門-源碼例程

    OpenCV3編程入門-源碼例程全集-形態(tài)學(xué)圖像處理綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    什么是DCS系統(tǒng)?DCS系統(tǒng)基礎(chǔ)知識(shí)入門

    什么是DCS系統(tǒng)?DCS系統(tǒng)基礎(chǔ)知識(shí)入門
    的頭像 發(fā)表于 12-02 11:14 ?4.5w次閱讀
    什么是DCS系統(tǒng)?DCS系統(tǒng)<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>入門</b>

    OpenCV入門教程之進(jìn)行圖像的保存詳細(xì)概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是OpenCV入門教程之進(jìn)行圖像的保存詳細(xì)概述。
    發(fā)表于 10-10 11:31 ?14次下載

    OpenCV函數(shù)圖像處理目錄說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是OpenCV函數(shù)圖像處理目錄說明。
    發(fā)表于 10-29 15:55 ?12次下載
    <b class='flag-5'>OpenCV</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>目錄說明

    詳解OpenCV入門知識(shí)圖片預(yù)處理

    OpenCV是一個(gè)跨平臺(tái)計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法庫(kù)。它不僅能用來實(shí)現(xiàn)各種復(fù)雜的算法,還能夠?qū)?b class='flag-5'>圖像進(jìn)行預(yù)處理:包括圖像的平移、旋轉(zhuǎn)、縮放、翻轉(zhuǎn)、裁剪。希望把這些
    的頭像 發(fā)表于 04-14 14:46 ?2541次閱讀

    圖像處理基礎(chǔ)知識(shí) 1

    我一直都在這里分享計(jì)算機(jī)基礎(chǔ)知識(shí),比如計(jì)算機(jī)組成原理、數(shù)據(jù)結(jié)構(gòu)與算法、計(jì)算機(jī)網(wǎng)絡(luò)和操作系統(tǒng)等。 不過偶爾我也想寫一下其他的話題,今天就想和你聊聊圖像處理的相關(guān)知識(shí),因?yàn)楣ぷ髦袝?huì)用
    的頭像 發(fā)表于 02-08 17:08 ?715次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>處理</b><b class='flag-5'>基礎(chǔ)知識(shí)</b> 1