OpenCV學習筆記之一:圖像基本介紹

首先我們要了解圖像的構成,圖像是由像素構成的,圖像裏的任何一個點都是一個像素

左邊的圖像看上去比較模糊,右上角的比較清晰一點,但是他們都是由一系列點組成的

不同在於左邊的像素要低一些,而右邊的像素要高一點

我們平常所說的像素其實就是構成圖像的點的多少,即像素的數量,像素的大小等於行像素乘以列像素

比如像素5000W的要比500W像素要清晰

一、圖像的分類

 二值圖像:任何一點非黑即白,只有兩個值(0,1)

灰度圖像:除了黑白還有灰色,把灰度分成256中不同的顏色,即有256個值,看起來會更細膩(0-255)

RGB圖像:即彩色圖像(red\green\blue)

簡單介紹下

比如我們隨便抓取二值圖像的某一個點,得到其像素,就是上圖右邊的形式,任何一個點都是由0或者1構成

對於灰度圖像,隨便抓取圖像的某一個點,得到其像素,就是上圖右邊的形式,任何一個點都是由0到255範圍之間的一個數字構成

對於彩色圖像,也就是我們最常見的RGB圖像,是由RGB三種三原色構成,所有顏色都可以按照不同比例的RGB進行調和得出,每種顏色的大小都是在0-255範圍之內。

對於彩色圖像,隨便抓取圖像的某一個點,得到其像素,就是上圖右邊的形式,任何一個點都是由三種顏色組成,每種顏色的取值0到255範圍之間的一個數字構成

即彩色圖

注:這裏要注意的問題是在opencv裏面對像素取值時,像素的順序是BGR

二、讀取像素

先看一段代碼

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型數據/testz.png",0)
img2=cv2.imread("/Users/admin/Desktop/模型數據/testz.png",1)
print("img1的像素爲:",img1[100,100])
print("img2的像素爲:",img2[100,100])

imread函數,第二個參數如果是0那麼讀取的就是灰度圖像,如果是1則爲彩色圖像

img1爲一個灰度圖像,而img2是一個彩色圖像,我們看下輸出結果

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')

img1的像素爲: 22

img2的像素爲: [10 20 30]

三、修改像素

修改像素比較簡單,採取直接賦值的方式

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型數據/testz.png",0)
print("img1的像素爲:",img1[100,100])
img1[100,100]=100
print("img1的像素爲:",img1[100,100])

輸出結果:

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')

img1的像素爲: 22

img1的像素爲: 100

彩色圖像也是一樣:

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型數據/testz.png",1)
print("img1的像素爲:",img1[100,100])
img1[100,100]=[100,100,100]
print("img1的像素爲:",img1[100,100])

輸出結果:

 runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')

img1的像素爲: [10 20 30]

img1的像素爲: [100 100 100]

當然我們也可以批量修改一個區域:

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型數據/testz.png",1)
cv2.imshow("original",img1)
img1[100:150,100:150]=[100,100,100]
cv2.imshow("result",img1)
cv2.waitKey()
cv2.destroyAllWindows() 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章