成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python灰度化函數(shù) python灰度圖如何二值化

python io. imread如何設(shè)置參數(shù),使讀取的圖片為灰度圖?

方法一:在使用OpenCV讀取圖片的同時將圖片轉(zhuǎn)換為灰度圖:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、青銅峽網(wǎng)站維護、網(wǎng)站推廣。

img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)

print("cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)結(jié)果如下:")

print('大小:{}'.format(img.shape))

print("類型:%s"%type(img))

print(img)

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

方法二:使用OpenCV,先讀取圖片,然后在轉(zhuǎn)換為灰度圖:

img = cv2.imread(imgfile)

#print(img.shape)

#print(img)

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Y = 0.299R + 0.587G + 0.114B

print("cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)結(jié)果如下:")

print('大小:{}'.format(gray_img.shape))

print("類型:%s" % type(gray_img))

print(gray_img)

運行結(jié)果如下:

方法三:使用PIL庫中的Image模塊:

img = np.array(Image.open(imgfile).convert('L'), 'f') #讀取圖片,灰度化,轉(zhuǎn)換為數(shù)組,L = 0.299R + 0.587G + 0.114B。'f'為float類型

print("Image方法的結(jié)果如下:")

print('大?。簕}'.format(img.shape))

print("類型:%s" % type(img))

print(img)

python 圖像灰度化怎么處理alpha 值

圖像的灰度處理:

CV_LOAD_IMAGE_GRAYSCALE,這是最簡單之間的辦法,在加載圖像時直接處理

IplImage* Igray=cvLoadImage("test.jpg",CV_LOAD_IMAGE_GRAYSCALE);

得到的圖像就是單通道的,也能夠用這個函數(shù):CVAPI(void) cvCvtColor( const CvArr* src, CvArr* dst, int code );

code=CV_BGR2GRAY;

opencv還提供了非常多方式,我這邊就不一一舉例了。

數(shù)字圖像處理Python實現(xiàn)圖像灰度變換、直方圖均衡、均值濾波

import CV2

import copy

import numpy as np

import random

使用的是pycharm

因為最近看了《銀翼殺手2049》,里面Joi實在是太好看了所以原圖像就用Joi了

要求是灰度圖像,所以第一步先把圖像轉(zhuǎn)化成灰度圖像

# 讀入原始圖像

img = CV2.imread('joi.jpg')

# 灰度化處理

gray = CV2.cvtColor(img, CV2.COLOR_BGR2GRAY)

CV2.imwrite('img.png', gray)

第一個任務(wù)是利用分段函數(shù)增強灰度對比,我自己隨便寫了個函數(shù)大致是這樣的

def chng(a):

if a 255/3:

b = a/2

elif a 255/3*2:

b = (a-255/3)*2 + 255/6

else:

b = (a-255/3*2)/2 + 255/6 +255/3*2

return b

rows = img.shape[0]

cols = img.shape[1]

cover = copy.deepcopy(gray)

for i in range(rows):

for j in range(cols):

cover[i][j] = chng(cover[i][j])

CV2.imwrite('cover.png', cover)

下一步是直方圖均衡化

# histogram equalization

def hist_equal(img, z_max=255):

H, W = img.shape

# S is the total of pixels

S = H * W * 1.

out = img.copy()

sum_h = 0.

for i in range(1, 255):

ind = np.where(img == i)

sum_h += len(img[ind])

z_prime = z_max / S * sum_h

out[ind] = z_prime

out = out.astype(np.uint8)

return out

covereq = hist_equal(cover)

CV2.imwrite('covereq.png', covereq)

在實現(xiàn)濾波之前先添加高斯噪聲和椒鹽噪聲(代碼來源于網(wǎng)絡(luò))

不知道這個椒鹽噪聲的名字是誰起的感覺隔壁小孩都饞哭了

用到了random.gauss()

percentage是噪聲占比

def GaussianNoise(src,means,sigma,percetage):

NoiseImg=src

NoiseNum=int(percetage*src.shape[0]*src.shape[1])

for i in range(NoiseNum):

randX=random.randint(0,src.shape[0]-1)

randY=random.randint(0,src.shape[1]-1)

NoiseImg[randX, randY]=NoiseImg[randX,randY]+random.gauss(means,sigma)

if NoiseImg[randX, randY] 0:

NoiseImg[randX, randY]=0

elif NoiseImg[randX, randY]255:

NoiseImg[randX, randY]=255

return NoiseImg

def PepperandSalt(src,percetage):

NoiseImg=src

NoiseNum=int(percetage*src.shape[0]*src.shape[1])

for i in range(NoiseNum):

randX=random.randint(0,src.shape[0]-1)

randY=random.randint(0,src.shape[1]-1)

if random.randint(0,1)=0.5:

NoiseImg[randX,randY]=0

else:

NoiseImg[randX,randY]=255

return NoiseImg

covereqg = GaussianNoise(covereq, 2, 4, 0.8)

CV2.imwrite('covereqg.png', covereqg)

covereqps = PepperandSalt(covereq, 0.05)

CV2.imwrite('covereqps.png', covereqps)

下面開始均值濾波和中值濾波了

就以n x n為例,均值濾波就是用這n x n個像素點灰度值的平均值代替中心點,而中值就是中位數(shù)代替中心點,邊界點周圍補0;前兩個函數(shù)的作用是算出這個點的灰度值,后兩個是對整張圖片進行

#均值濾波模板

def mean_filter(x, y, step, img):

sum_s = 0

for k in range(x-int(step/2), x+int(step/2)+1):

for m in range(y-int(step/2), y+int(step/2)+1):

if k-int(step/2) 0 or k+int(step/2)+1 img.shape[0]

or m-int(step/2) 0 or m+int(step/2)+1 img.shape[1]:

sum_s += 0

else:

sum_s += img[k][m] / (step*step)

return sum_s

#中值濾波模板

def median_filter(x, y, step, img):

sum_s=[]

for k in range(x-int(step/2), x+int(step/2)+1):

for m in range(y-int(step/2), y+int(step/2)+1):

if k-int(step/2) 0 or k+int(step/2)+1 img.shape[0]

or m-int(step/2) 0 or m+int(step/2)+1 img.shape[1]:

sum_s.append(0)

else:

sum_s.append(img[k][m])

sum_s.sort()

return sum_s[(int(step*step/2)+1)]

def median_filter_go(img, n):

img1 = copy.deepcopy(img)

for i in range(img.shape[0]):

for j in range(img.shape[1]):

img1[i][j] = median_filter(i, j, n, img)

return img1

def mean_filter_go(img, n):

img1 = copy.deepcopy(img)

for i in range(img.shape[0]):

for j in range(img.shape[1]):

img1[i][j] = mean_filter(i, j, n, img)

return img1

完整main代碼如下:

if __name__ == "__main__":

# 讀入原始圖像

img = CV2.imread('joi.jpg')

# 灰度化處理

gray = CV2.cvtColor(img, CV2.COLOR_BGR2GRAY)

CV2.imwrite('img.png', gray)

rows = img.shape[0]

cols = img.shape[1]

cover = copy.deepcopy(gray)

for i in range(rows):

for j in range(cols):

cover[i][j] = chng(cover[i][j])

CV2.imwrite('cover.png', cover)

covereq = hist_equal(cover)

CV2.imwrite('covereq.png', covereq)

covereqg = GaussianNoise(covereq, 2, 4, 0.8)

CV2.imwrite('covereqg.png', covereqg)

covereqps = PepperandSalt(covereq, 0.05)

CV2.imwrite('covereqps.png', covereqps)

meanimg3 = mean_filter_go(covereqps, 3)

CV2.imwrite('medimg3.png', meanimg3)

meanimg5 = mean_filter_go(covereqps, 5)

CV2.imwrite('meanimg5.png', meanimg5)

meanimg7 = mean_filter_go(covereqps, 7)

CV2.imwrite('meanimg7.png', meanimg7)

medimg3 = median_filter_go(covereqg, 3)

CV2.imwrite('medimg3.png', medimg3)

medimg5 = median_filter_go(covereqg, 5)

CV2.imwrite('medimg5.png', medimg5)

medimg7 = median_filter_go(covereqg, 7)

CV2.imwrite('medimg7.png', medimg7)

medimg4 = median_filter_go(covereqps, 7)

CV2.imwrite('medimg4.png', medimg4)

python的pillow庫怎么處理灰度圖像

Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作等。

1)使用 Image 類

PIL最重要的類是 Image class, 你可以通過多種方法創(chuàng)建這個類的實例;你可以從文件加載圖像,或者處理其他圖像, 或者從 scratch 創(chuàng)建。

要從文件加載圖像,可以使用open( )函數(shù),在Image模塊中:

from PIL import Image

im = Image.open("E:/photoshop/1.jpg")

加載成功后,將返回一個Image對象,可以通過使用示例屬性查看文件內(nèi)容:

print(im.format, im.size, im.mode)

('JPEG', (600, 351), 'RGB')

format 這個屬性標(biāo)識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數(shù)量和名稱,以及像素類型和深度。常見的modes 有 “L” (luminance) 表示灰度圖像, “RGB” 表示真彩色圖像, and “CMYK” 表示出版圖像。

如果文件打開錯誤,返回 IOError 錯誤。

只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:

im.show()

2)讀寫圖像

PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數(shù)從磁盤讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據(jù)文件內(nèi)容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。

加載文件,并轉(zhuǎn)化為png格式:

"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys.argv[1:]:

f,e = os.path.splitext(infile)

outfile = f +".png"

if infile != outfile:

try:

Image.open(infile).save(outfile)

except IOError:

print("Cannot convert", infile)

save() 方法的第二個參數(shù)可以指定文件格式。

3)創(chuàng)建縮略圖

縮略圖是網(wǎng)絡(luò)開發(fā)或圖像軟件預(yù)覽常用的一種基本技術(shù),使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:

# create thumbnail

size = (128,128)

for infile in glob.glob("E:/photoshop/*.jpg"):

f, ext = os.path.splitext(infile)

img = Image.open(infile)

img.thumbnail(size,Image.ANTIALIAS)

img.save(f+".thumbnail","JPEG")

上段代碼對photoshop下的jpg圖像文件全部創(chuàng)建縮略圖,并保存,glob模塊是一種智能化的文件名匹配技術(shù),在批圖像處理中經(jīng)常會用到。

注意:Pillow庫不會直接解碼或者加載圖像柵格數(shù)據(jù)。當(dāng)你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩余部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關(guān)。

4)圖像的剪切、粘貼與合并操作

Image 類包含的方法允許你操作圖像部分選區(qū),PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區(qū),如:

# crop, paste and merge

im = Image.open("E:/photoshop/lena.jpg")

box = (100,100,300,300)

region = im.crop(box)

矩形選區(qū)有一個4元元組定義,分別表示左、上、右、下的坐標(biāo)。這個庫以左上角為坐標(biāo)原點,單位是px,所以上訴代碼復(fù)制了一個 200×200 pixels 的矩形選區(qū)。這個選區(qū)現(xiàn)在可以被處理并且粘貼到原圖。

region = region.transpose(Image.ROTATE_180)

im.paste(region, box)

當(dāng)你粘貼矩形選區(qū)的時候必須保證尺寸一致。此外,矩形選區(qū)不能在圖像外。然而你不必保證矩形選區(qū)和原圖的顏色模式一致,因為矩形選區(qū)會被自動轉(zhuǎn)換顏色。

5)分離和合并顏色通道

對于多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成后重新合成多通道,在Pillow中,很簡單,如下:

r,g,b = im.split()

im = Image.merge("RGB", (r,g,b))

對于split( )函數(shù),如果是單通道的,則返回其本身,否則,返回各個通道。

6)幾何變換

對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:

out = im.resize((128,128))

out = im.rotate(45) # degree conter-clockwise

其中,resize( )函數(shù)的參數(shù)是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉(zhuǎn)角度。在Pillow中,對于一些常見的旋轉(zhuǎn)作了專門的定義:

out = im.transpose(Image.FLIP_LEFT_RIGHT)

out = im.transpose(Image.FLIP_TOP_BOTTOM)

out = im.transpose(Image.ROTATE_90)

out = im.transpose(Image.ROTATE_180)

out = im.transpose(Image.ROTATE_270)

7)顏色空間變換

在處理圖像時,根據(jù)需要進行顏色空間的轉(zhuǎn)換,如將彩色轉(zhuǎn)換為灰度:

cmyk = im.convert("CMYK")

gray = im.convert("L")

8)圖像濾波

圖像濾波在ImageFilter 模塊中,在該模塊中,預(yù)先定義了很多增強濾波器,可以通過filter( )函數(shù)使用,預(yù)定義濾波器包括:

BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值濾波,CONTOUR找輪廓,F(xiàn)IND_EDGES邊緣檢測,使用該模塊時,需先導(dǎo)入,使用方法如下:

from PIL import ImageFilter

imgF = Image.open("E:/photoshop/lena.jpg")

outF = imgF.filter(ImageFilter.DETAIL)

conF = imgF.filter(ImageFilter.CONTOUR)

edgeF = imgF.filter(ImageFilter.FIND_EDGES)

imgF.show()

outF.show()

conF.show()

edgeF.show()

除此以外,ImageFilter模塊還包括一些擴展性強的濾波器:

class PIL.ImageFilter.GaussianBlur(radius=2)

當(dāng)前文章:python灰度化函數(shù) python灰度圖如何二值化
鏈接URL:http://jinyejixie.com/article16/dodhsdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)網(wǎng)站收錄、電子商務(wù)、微信小程序、全網(wǎng)營銷推廣、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
城市| 定安县| 阜宁县| 米易县| 恩平市| 盐池县| 富平县| 东乡县| 东乡县| 大化| 美姑县| 偏关县| 万盛区| 侯马市| 洛南县| 白城市| 泸溪县| 长汀县| 珠海市| 三台县| 保山市| 竹北市| 滦平县| 龙江县| 广丰县| 绥化市| 青田县| 岱山县| 鄂尔多斯市| 桂林市| 会同县| 潍坊市| 荣成市| 利辛县| 拜城县| 墨脱县| 万源市| 三门峡市| 米易县| 彰武县| 临高县|