python獲取圖片像素點顏色_Python獲取圖片位置像素色值及判斷色值是否存在


本文背景:

公司項目的廣告系統有個功能,給圖片模板打指定的顏色值點,根據需要拼合的圖片數量,打點數量也不同。設計說他弄好了,運營上傳打點后的模板圖片時,獲取不到打點的位置坐標。於是找研發看是怎么回事,就有了下面的代碼。

濤哥解決這個問題

1、判斷設計給模板圖片打點的位置和數量是否正確

2、判斷打點的顏色值是否正確

解決辦法一:

使用ubuntu的gnu圖片處理軟件打開模板圖片,放大就可以看到打點像素位置顏色,再用吸管就能知道打點位置顏色是否正確,打點的位置和數量也一目了然。

解決辦法二:

碼農自然可以寫代碼解決,好吧,寫段python來解決這個問題吧

checkPic.py

Python

#!/usr/bin/python

# -*- coding:utf-8 -*-

from PIL import Image

# 濤哥用代碼看是那的錯 https://blog.kydbk.com

img = Image.open("test.png")

# 獲取圖片尺寸的大小(600,600)

print img.size

# 獲取圖片的格式 png

print img.format

# 獲取圖片的圖像類型 RGBA

print img.mode

# 顯示圖片

img.show()

# 獲取某個像素位置的值

print img.getpixel((126, 52))

# 生成縮略圖

# img.thumbnail((128, 128))

# 保存圖片

# img.save('image_thumb.jpg', 'JPEG')

"""

# 獲取圖片指定像素點的像素

def getPngPix(pngPath = "test.png",x = 1,y = 1):

img_src = Image.open(pngPath)

img_src = img_src.convert('RGBA')

img_array = img_src.load()

data = img_array[x,y]

img_src.close()

return data

# 輸入當前位置像素 (207,75,90,255)

print(getPngPix("test.png",126,52))

"""

# 判斷某像素值是否在圖像中

# 查找目標色值 (1,1,1,255)

# 查找目標色值 (2,2,2,255)

# 查找目標色值 (255,250,250,255)

i = 1

j = 1

result = 0

break_flag = False

width = img.size[0]#長度

height = img.size[1]#寬度

for i in range(0,width):#遍歷所有長度的點

for j in range(0,height):#遍歷所有寬度的點

#每個像素點的顏色RGBA的值(r,g,b,alpha)

data = (img.getpixel((i,j)))#打印該圖片的所有點

# 判斷RGBA的值

if (data[0]==255 and data[1]==250 and data[2]==250):

# if (data[0]==207 and data[1]==75 and data[2]==90):

result = 1

print"圖片中存在該像素!"

break_flag = True

break

if break_flag==True:

break

if break_flag==True:

break

if(result == 0):

print"圖片中不存在該像素!"

"""

data = (img.getpixel((i,j)))#打印該圖片的所有點

print (data)#打印每個像素點的顏色RGBA的值(r,g,b,alpha)

print (data[0])#打印RGBA的r值

if (data[0]>=170 and data[1]>=170 and data[2]>=170):#RGBA的r值大於170,並且g值大於170,並且b值大於170

img.putpixel((i,j),(234,53,57,255))#則這些像素點的顏色改成大紅色

img = img.convert("RGB")#把圖片強制轉成RGB

img.save("e:/pic/testee1.jpg")#保存修改像素點后的圖片

"""

 

 

#!/usr/bin/python

# -*- coding:utf-8 -*-

fromPILimportImage

# 濤哥用代碼看是那的錯 https://blog.kydbk.com

img=Image.open("test.png")

# 獲取圖片尺寸的大小(600,600)

printimg.size

# 獲取圖片的格式 png

printimg.format

# 獲取圖片的圖像類型 RGBA

printimg.mode

# 顯示圖片

img.show()

# 獲取某個像素位置的值

printimg.getpixel((126,52))

# 生成縮略圖

# img.thumbnail((128, 128))

# 保存圖片

# img.save('image_thumb.jpg', 'JPEG')

"""

# 獲取圖片指定像素點的像素

def getPngPix(pngPath = "test.png",x = 1,y = 1):

img_src = Image.open(pngPath)

img_src = img_src.convert('RGBA')

img_array = img_src.load()

data = img_array[x,y]

img_src.close()

return data

# 輸入當前位置像素 (207,75,90,255)

print(getPngPix("test.png",126,52))

"""

# 判斷某像素值是否在圖像中

# 查找目標色值 (1,1,1,255)

# 查找目標色值 (2,2,2,255)

# 查找目標色值 (255,250,250,255)

i=1

j=1

result=0

break_flag=False

width=img.size[0]#長度

height=img.size[1]#寬度

foriinrange(0,width):#遍歷所有長度的點

forjinrange(0,height):#遍歷所有寬度的點

#每個像素點的顏色RGBA的值(r,g,b,alpha)

data=(img.getpixel((i,j)))#打印該圖片的所有點

# 判斷RGBA的值

if(data[0]==255anddata[1]==250anddata[2]==250):

# if (data[0]==207 and data[1]==75 and data[2]==90):

result=1

print"圖片中存在該像素!"

break_flag=True

break

ifbreak_flag==True:

break

ifbreak_flag==True:

break

if(result==0):

print"圖片中不存在該像素!"

"""

data = (img.getpixel((i,j)))#打印該圖片的所有點

print (data)#打印每個像素點的顏色RGBA的值(r,g,b,alpha)

print (data[0])#打印RGBA的r值

if (data[0]>=170 and data[1]>=170 and data[2]>=170):#RGBA的r值大於170,並且g值大於170,並且b值大於170

img.putpixel((i,j),(234,53,57,255))#則這些像素點的顏色改成大紅色

img = img.convert("RGB")#把圖片強制轉成RGB

img.save("e:/pic/testee1.jpg")#保存修改像素點后的圖片

"""

圖片扔目錄里直接判斷是否顏色打正確了,問題解決…
————————————————
轉載:https://blog.csdn.net/weixin_39850167/article/details/111446347


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM