⑴ python實現grb和hsv轉換
這個輸出整數還是小數,估計輸出整數就可以,如果希望輸出浮點數,可以將round去掉。
importmath
defhsv2rgb(h,s,v):
h=float(h)
s=float(s)
v=float(v)
h60=h/60.0
h60f=math.floor(h60)
hi=int(h60f)%6
f=h60-h60f
p=v*(1-s)
q=v*(1-f*s)
t=v*(1-(1-f)*s)
r,g,b=0,0,0
ifhi==0:r,g,b=v,t,p
elifhi==1:r,g,b=q,v,p
elifhi==2:r,g,b=p,v,t
elifhi==3:r,g,b=p,q,v
elifhi==4:r,g,b=t,p,v
elifhi==5:r,g,b=v,p,q
r,g,b=int(r*255),int(g*255),int(b*255)
returnr,g,b
defrgb2hsv(r,g,b):
r,g,b=r/255.0,g/255.0,b/255.0
mx=max(r,g,b)
mn=min(r,g,b)
df=mx-mn
ifmx==mn:
h=0
elifmx==r:
h=(60*((g-b)/df)+360)%360
elifmx==g:
h=(60*((b-r)/df)+120)%360
elifmx==b:
h=(60*((r-g)/df)+240)%360
ifmx==0:
s=0
else:
s=df/mx
v=mx
returnh,s,v
if__name__=="__main__":
fp=open("1.txt","w")
forlineinopen("rgb2hsv.txt",'r'):
r,g,b=map(int,line.split(','))
h,s,v=rgb2hsv(r,g,b)
fp.write("%d,%d,%d "%(round(h),round(s),round(v)))
fp.close()
⑵ python中fig,ax=plt.subplots什麼意思
fig,ax=plt.subplots的意思是將plt.subplots()函數的返回值賦值給fig和ax兩個變數。
plt.subplots()是一個函數,返回一個包含figure和axes對象的元組,因此,使用fig,ax=plt.subplots()將元組分解為fig和ax兩個變數。
通常,我們只用到ax:
fig,ax = plt.subplots(nrows=2, ncols=2)
axes = ax.flatten()
把父圖分成2*2個子圖,ax.flatten()把子圖展開賦值給axes,axes[0]便是第一個子圖,axes[1]是第二個。
(2)pythonrgb2hsv擴展閱讀
在matplotlib中,整個圖像為一個Figure對象。在Figure對象中可以包含一個或者多個Axes對象。每個Axes(ax)對象都是一個擁有自己坐標系統的繪圖區域。所屬關系如下:
def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,
subplot_kw=None, gridspec_kw=None, **fig_kw):
參數:
nrows,ncols:子圖的行列數。
sharex, sharey:
設置為 True 或者 『all』 時,所有子圖共享 x 軸或者 y 軸,
設置為 False or 『none』 時,所有子圖的 x,y 軸均為獨立,
設置為 『row』 時,每一行的子圖會共享 x 或者 y 軸,
設置為 『col』 時,每一列的子圖會共享 x 或者 y 軸。
返回值
fig:matplotlib.figure.Figure對象
ax:子圖對象(matplotlib.axes.Axes)或者是他的數組
⑶ matlab中函數rgb2hsv使用的轉換公式是什麼
公式:
H參數表示色彩信息,即所處的光譜顏色的位置。該參數用一角度量來表示,紅、綠、藍分別相隔120度。互補色分別相差180度。 純度S為一比例值,范圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率。S=0時,只有灰度。 V表示色彩笑圓的明亮程度,范圍從0到1。薯升謹有一點要注意:它和光強度之間並沒有數基直接的聯系。 RGB轉化到HSV的演算法:
max=max(R,G,B)
min=min(R,G,B)
if R = max, H = (G-B)/(max-min)
if G = max, H = 2 + (B-R)/(max-min)
if B = max, H = 4 + (R-G)/(max-min)
H = H * 60 if H < 0, H = H + 360
V=max(R,G,B)
S=(max-min)/max
HSV轉化到RGB的演算法
if s = 0 R=G=B=V
else H /= 60;
i = INTEGER(H)
f = H - i
a = V * ( 1 - s )
b = V * ( 1 - s * f )
c = V * ( 1 - s * (1 - f ) )
switch(i)
case 0: R = V; G = c; B = a;
case 1: R = b; G = v; B = a;
ase 2: R = a; G = v; B = c;
case 3: R = a; G = b; B = v;
case 4: R = c; G = a; B = v;
case 5: R = v; G = a; B = b;
HSV對用戶來說是一種直觀的顏色模型。我們可以從一種純色彩開始,即指定色彩角H,並讓V=S=1,然後我們可以通過向其中加入黑色和白色來得到我們需要的顏色。增加黑色可以減小V而S不變,同樣增加白色可以減小S而V不變。例如,要得到深藍色,V=0.4 S=1 H=240度。要得到淡藍色,V=1 S=0.4 H=240度。 一般說來,人眼最大能區分128種不同的色彩,130種色飽和度,23種明暗度。如果我們用16Bit表示HSV的話,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以滿足我們的需要了。 由於HSV是一種比較直觀的顏色模型,所以在許多圖像編輯工具中應用比較廣泛,如Photoshop(在Photoshop中叫HSB)等等,但這也決定了它不適合使用在光照模型中,許多光線混合運算、光強運算等都無法直接使用HSV來實現。
⑷ opencv-python簡單使用--識別滑動驗證碼缺口
以上是需要是別的圖片缺口,來自某東登錄。
opencv是計算機視覺。
1、 imread :讀取圖片
imread(image_path, flag) :
images_path :圖片路徑,找不到不報錯
枝磨 flag :
1/cv2.IMREAD_COLOR :彩色圖片,圖片透明性會被忽略,默認參數
0/cv2.IMREAD_GRAYSCALE :灰色圖片
-1/cv2.IMREAD_UNCHANGED :包括其alpha通道
2、 imwrite
imwrite(img_path_name,img)
img_path_name :保存的文件名
img :文件對象
3、 cvtColor
cvtColor(img,code)
img : 圖像對象
code :
cv2.COLOR_RGB2GRAY : RGB轉換到灰度模式
咐搭檔 cv2.COLOR_RGB2HSV : RGB轉換到HSV模式(hue,saturation,Value)衡亂
4、 matchTemplate
matchTemplate(img_path, bg_path, cv2.TM_CCOEFF_NORMED)
img_path :對比圖片
bg_path :背景圖片
cv2.TM_CCOEFF_NORMED
⑸ 我做畢業設計,圖像智能分類,我是使用matlab,rgb2hsv函數,請問怎麼提取hsv的H.S.V的值
%可以頌埋用rgb2hsv函數來轉換例如:
t=imread('a.bmp'野滾螞);
HSV=rgb2hsv(t);
H=HSV(:,:,1);%提取備猛64×64×3維矩陣中的64×64×1矩陣
S=HSV(:,:,2);%提取64×64×3維矩陣中的64×64×2矩陣
V=HSV(:,:,3);%提取64×64×3維矩陣中的64×64×3矩陣
⑹ python-opencv怎樣找到要跟蹤對象的HSV
其實這真的很簡單,函數 cv2.cvtColor() 也可以用到這里。但是現在你要傳入的參數是(你想要
的)BGR 值而不是一副圖。例如,我們要找到綠色的 HSV 值,我們只需在終端輸入以下命令:
**import cv2
import numpy as np
green=np.uint8([0,255,0])
hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
error: /builddir/build/BUILD/opencv-2.4.6.1/
moles/imgproc/src/color.cpp:3541:
error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)
in function cvtColor
#scn (the number of channels of the source),
#i.e. self.img.channels(), is neither 3 nor 4.
#
#depth (of the source),
#i.e. self.img.depth(), is neither CV_8U nor CV_32F.
# 所以不能用 [0,255,0] ,而要用 [[[0,255,0]]]
# 這里的三層括弧應該分別對應於 cvArray , cvMat , IplImage
green=np.uint8([[[0,255,0]]])
hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
print hsv_green
[[[60 255 255]]]**
**擴展縮放只是改變圖像的尺寸大小。OpenCV 提供的函數 cv2.resize()
可以實現這個功能。圖像的尺寸可以自己手動設置,你也可以指定縮放因子。我
們可以選擇使用不同的插值方法。在縮放時我們推薦使用 cv2.INTER_AREA,
在擴展時我們推薦使用 v2.INTER_CUBIC(慢) 和 v2.INTER_LINEAR。
默認情況下所有改變圖像尺寸大小的操作使用的插值方法都是 cv2.INTER_LINEAR。
你可以使用下面任意一種方法改變圖像的尺寸:**
12345671234567
**# -*- coding: utf-8 -*-
"""
@author: Andrew
"""
import cv2
import numpy as np
img=cv2.imread('tu.jpg')
res=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
height,width=img.shape[:2]
res=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
while(1):
cv2.imshow('res',res)
cv2.imshow('img',img)
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()**
頂
0
⑺ 提取HSV顏色特徵,並計算維數的熵,最後保存特徵和熵,形式:圖像名、特徵和熵,用python實現,怎麼實現
可以使用Python版的opencv 來實現。
現讀取圖片:
importcv2
importnumpyasnp
image=cv2.imread('./src/q5.png')
HSV=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
計算熵
img=np.array(HSV)
foriinrange(len(img)):
forjinrange(len(img[i])):
val=img[i][j]
tmp[val]=float(tmp[val]+1)
k=float(k+1)
foriinrange(len(tmp)):
tmp[i]=float(tmp[i]/k)
foriinrange(len(tmp)):
if(tmp[i]==0):
res=res
else:
res=float(res-tmp[i]*(math.log(tmp[i])/math.log(2.0)))
保存:
HSV圖形可以直接存儲,特徵可以存xml中~
cv2.imwrite("具體路徑",HSV)
⑻ 如何用python實現顏色空間轉換
可以考慮姿轎使用python+opencv,禪冊則比源生的python自己編程轉換賀棚要方便得多。
另外一個選擇就是用python自己的庫:PIL
colorsys.rgb_to_hsv
⑼ Opencv用Python實現灰度圖
請題主把兩張圖上傳上來。具體方法:是上傳到網路網盤然後鏈接貼過來
⑽ python用PIL如何獲得一張圖片的亮度值
圖像的亮度是指每一個點的亮度,如果比差世較兩個圖像的亮度的話可能就要和塵計算所有點的亮度平均值,下面是計算某個點的亮度值的程序,僅供參考。
import Image
im=Image.open("d:/lena.jpg")
print im.mode #查看圖像喚慶禪的模式
im1=im.convert("YCbCr") #轉換圖像的模式到視頻模式
y,cb,cr=im1.getpixel((10,10)) #提取點(10,10)位置的亮度、藍色分量、紅色分量的值。
print y #輸出亮度值
後面兩步循環就可以計算整個圖像的亮度平均值。