㈠ 如何用python分別提取出某個像素的rgb值並寫入一個一行三列的數組中。
可以使用 Python Image Library 做,load() 函數會返回一個對象,這個對象我們可以把它當作一個二維數組對待,而數組中存放的就是點的 RGB 值,可以很容易地訪問到任何像素點的 RGB 值:
fromPILimportImage
#可以支持很多種圖片格式.
im=Image.open("your_picture.jpg")
pix=im.load()
#獲得圖片的尺度,可以用於迭代
printim.size
#獲得某個像素點的RGB值,像素點坐標由[x,y]指定
printpix[x,y]
#設置[x,y]點的RGB的值為value
pix[x,y]=value
㈡ 如何用python或者其它編程方法將圖片中非黑且非白的顏色轉化為白色
直接操作bitmap的data或者用opencv的iplimage都可以 挺簡單的
㈢ 如何使用Python如何獲取某像素點處顏色
方法一:
# -*- coding: cp936 -*-
from ctypes import *
#引入winapi
gdi32 = windll.gdi32
user32 = windll.user32
#獲取句柄
hdc = user32.GetDC(None)
#獲取指定像素的顏色
c = gdi32.GetPixel(hdc,100,50)
#列印十進制轉化為十六進制的顏色
print hex(c)
㈣ python 如何只選中圖片里的一種顏色 變更為另一個種顏色
importImage
img=Image.open("pic.jpg")
foriinxrange(300):
forjinxrange(300):
r,g,b=img.getpixel((i,j))
if(b>gandb>r):#對藍色進行判斷
b=127
g=127
r=127
img.putpixel((i,j),(r,g,b))
img.show()
㈤ 如何用python提取出兩幅圖像中不同的部分
簡單說,兩附圖之間對應像素相減,然後求絕對值,差異大於某個特定值的就認為是不同點。(如果你的圖片是jpg壓縮,那麼由於離散餘弦變換過程去掉了高頻信息,會導致圖像顏色變化劇烈的部分出現細微鋸齒狀差異)
使用Numpy操作,np.abs(img1-img2)>thr。即可得到
㈥ python-opencv怎麼在不影響圖片中其他顏色的情況下,將黑色背景變成白色背景
設前景色為白色,選擇--色彩范圍,點選黑色,作反相處理,調整色階至滿意,局部細節用畫筆修整一下即可。
㈦ 如何用python將文件夾中圖片根據顏色分類
本文實例講述了Python通過PIL獲取圖片主要顏色並和顏色庫進行對比的方法。分享給大家供大家參考。具體分析如下:
這段代碼主要用來從圖片提取其主要顏色,類似Goolge和Bai的圖片搜索時可以指定按照顏色搜索,所以我們先需要將每張圖片的主要顏色提取出來,然後將顏色劃分到與其最接近的顏色段上,然後就可以按照顏色搜索了。
在使用google或者搜圖的時候會發現有一個圖片顏色選項,感覺非常有意思,有人可能會想這肯定是人為的去劃分的,呵呵,有這種可能,但是估計人會累死,開個玩笑,當然是通過機器識別的,海量的圖片只有機器識別才能做到。
那用python能不能實現這種功能呢?答案是:能
利用python的PIL模塊的強大的圖像處理功能就可以做到,下面上代碼:
復制代碼代碼如下:
import colorsys
def get_dominant_color(image):
#顏色模式轉換,以便輸出rgb顏色值
image = image.convert('RGBA')
#生成縮略圖,減少計算量,減小cpu壓力
image.thumbnail((200, 200))
max_score = None
dominant_color = None
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# 跳過純黑色
if a == 0:
continue
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
y = (y - 16.0) / (235 - 16)
# 忽略高亮色
if y > 0.9:
continue
# Calculate the score, preferring highly saturated colors.
# Add 0.1 to the saturation so we don't completely ignore grayscale
# colors by multiplying the count by zero, but still give them a low
# weight.
score = (saturation + 0.1) * count
if score > max_score:
max_score = score
dominant_color = (r, g, b)
return dominant_color
使用方法:
from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))
這樣就會返回一個rgb顏色,但是這個值是很精確的范圍,那我們如何實現網路圖片那樣的色域呢??
其實方法很簡單,r/g/b都是0-255的值,我們只要把這三個值分別劃分相等的區間,然後組合,取近似值。例如:劃分為0-127,和128-255,然後自由組合,可以出現八種組合,然後從中挑出比較有代表性的顏色即可。
當然我只是舉一個例子,你也可以劃分的更細,那樣顯示的顏色就會更准確~~大家趕快試試吧
㈧ 用python寫識別圖片主要顏色的程序
#-*-coding:utf-8-*-
importcolorsys
defget_dominant_color(image):
#顏色模式轉換,以便輸出rgb顏色值
image=image.convert('RGBA')
#生成縮略圖,減少計算量,減小cpu壓力
image.thumbnail((200,200))
max_score=None
dominant_color=None
forcount,(r,g,b,a)inimage.getcolors(image.size[0]*image.size[1]):
#跳過純黑色
ifa==0:
continue
saturation=colorsys.rgb_to_hsv(r/255.0,g/255.0,b/255.0)[1]
y=min(abs(r*2104+g*4130+b*802+4096+131072)>>13,235)
y=(y-16.0)/(235-16)
#忽略高亮色
ify>0.9:
continue
#Calculatethescore,.
#Add0.1tothesaturationsowedon'tcompletelyignoregrayscale
#,butstillgivethemalow
#weight.
score=(saturation+0.1)*count
ifscore>max_score:
max_score=score
dominant_color=(r,g,b)
returndominant_color
if__name__=="__main__":
fromPILimportImage
importos
path=r'.\pics\'
fp=open('file_color.txt','w')
forfilenameinos.listdir(path):
printpath+filename
try:
color=get_dominant_color(Image.open(path+filename))
fp.write('Thecolorof'+filename+'is'+str(color)+' ')
except:
print"Thisfileformatisnotsupport"
fp.close()
pics文件夾和python程序在一個目錄下,產生的文件名file_color.txt也在這個目錄下。
看看能否幫到你
㈨ 怎麼用opencv和python,只保留深藍色部分,其他區域變為黑色
1、首先明確深藍的數據范圍;
2、將圖片轉換到HSV空間,並分離三個通道為新的三個單通道圖片;
3、H圖片使用cvInRangeS獲取「藍」色區域的MASK。「藍」在色度輪盤的值為240
4、同上,S圖片獲取色純度大於一定值的MASK;
5、同上,V圖片獲取亮度在一定范圍內的MASK;
6、上述三圖二值化以後,做「與」運算,成為最終MASK;
7、用這個新生成的MASK去處理原圖;