日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python-OpenCV 处理图像(七):图像灰度化处理

發布時間:2025/3/21 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-OpenCV 处理图像(七):图像灰度化处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了加快處理速度,在圖像處理算法中,往往需要把彩色圖像轉換為灰度圖像。

0x00. 灰度圖

灰度數字圖像是每個像素只有一個采樣顏色的圖像,這類圖像通常顯示為從最暗黑色到最亮的白色的灰度。

灰度圖像與黑白圖像不同,在計算機圖像領域中黑白圖像只有黑白兩種顏色,灰度圖像在黑色與白色之間還有許多級的顏色深度。

在RGB模型中,如果R=G=B時,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值。

0x01. 灰度化的方法

1. 分量法

將彩色圖像中的三分量的亮度作為三個灰度圖像的灰度值,可根據應用需要選取一種灰度圖像。

F1(i,j) = R(i,j)
F2(i,j) = G(i,j)
F3(i,j) = B(i,j)

代碼示例:

import cv2.cv as cv image = cv.LoadImage('mao.jpg') b = cv.CreateImage(cv.GetSize(image), image.depth, 1) g = cv.CloneImage(b) r = cv.CloneImage(b)cv.Split(image, b, g, r, None) cv.ShowImage('a_window', r)cv.WaitKey(0)

2. 最大值法

將彩色圖像中的三分量亮度的最大值作為灰度圖的灰度值。

F(i,j) = max(R(i,j), G(i,j), B(i,j))

代碼示例:

image = cv.LoadImage('mao.jpg') new = cv.CreateImage(cv.GetSize(image), image.depth, 1) for i in range(image.height):for j in range(image.width):new[i,j] = max(image[i,j][0], image[i,j][1], image[i,j][2]) cv.ShowImage('a_window', new) cv.WaitKey(0)

3.平均值法

將彩色圖像中的三分量亮度求平均得到一個灰度值。

F(i,j) = (R(i,j) + G(i,j) + B(i,j)) / 3

代碼示例:

image = cv.LoadImage('mao.jpg') new = cv.CreateImage(cv.GetSize(image), image.depth, 1) for i in range(image.height):for j in range(image.width):new[i,j] = (image[i,j][0] + image[i,j][1] + image[i,j][2])/3 cv.ShowImage('a_window', new) cv.WaitKey(0)

4.加權平均法

根據重要性及其它指標,將三個分量以不同的權值進行加權平均。由于人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對RGB三分量進行加權平均能得到較合理的灰度圖像。

F(i,j) = 0.30R(i,j) + 0.59G(i,j) + 0.11B(i,j))

代碼示例:

image = cv.LoadImage('mao.jpg') new = cv.CreateImage(cv.GetSize(image), image.depth, 1) for i in range(image.height):for j in range(image.width):new[i,j] = 0.3 * image[i,j][0] + 0.59 * image[i,j][1] + 0.11 * image[i,j][2] cv.ShowImage('a_window', new) cv.WaitKey(0)

上面的公式可以看出綠色(G 分量)所占的比重比較大,所以有時候也會直接取G 分量進行灰度化。

代碼示例:

image = cv.LoadImage('mao.jpg') new = cv.CreateImage(cv.GetSize(image), image.depth, 1) for i in range(image.height):for j in range(image.width):new[i,j] = image[i,j][1] cv.ShowImage('a_window', new) cv.WaitKey(0)

總結

以上是生活随笔為你收集整理的Python-OpenCV 处理图像(七):图像灰度化处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。