『壹』 提取顏色特徵並計算熵,使用python實現
正好學到這,練下手。比較晚了,所以寫的比較簡單,不明白了明天再說
『貳』 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-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)
『伍』 灰度圖圖像替換hsv中的v的Python實現,不要調用庫函數
也可以轉換為灰度圖像。 函數原型:void cvCvtColor( const CvArr* src, CvArr* dst, int code ); 參數: src 輸入的 8-bit,16-bit或 32-bit單倍精度
『陸』 python畫曲線圖背景為白色
這是一種可能的方法。如果轉換為HSV色彩空間,藍色陰影將顯示比黑色和白色更高的飽和度,所以......
轉換為HSV
找到每行的平均飽和度,並選擇平均飽和度超過閾值的行
灰度化那些行,反轉並閾值它們
如果反向(突出)背景是除黑色或白色之外的任何顏色,則此方法應該有效。它假設您根據示例將圖像偏斜為真正的垂直/水平。
『柒』 python如何繪制預測模型校準圖
python繪制預測模型校準圖可以使用校準曲線,因為預測一個模型校準的最簡單的方法是通過一個稱為「校準曲線」的圖(也稱為「可靠性圖」,reliability diagram)。
這個方法主要是將觀察到的結果通過概率劃分為幾類(bin)。因此,屬於同一類的觀測值具有相近的概率。
對於每個類,校準曲線將預測這個類的平均值,然後將預測概率的平均值與理論平均值(即觀察到的目標變數的平均值)進行比較。
你只需要確定類的數量和以下兩者之間的分類策略即可:
1、「uniform」,一個0-1的間隔被分為n_bins個類,它們都具有相同的寬度。
2、「quantile」,類的邊緣被定義,從而使得每個類都具有相同數量的觀測值。
假設你的模型具有良好的精度,則校準曲線將單調增加。但這並不意味著模型已被正確校準。實際上,只有在校準曲線非常接近等分線時(即下圖中的灰色虛線),您的模型才能得到很好的校準,因為這將意味著預測概率基本上接近理論概率。
python繪制預測模型中如何解決校準錯誤:
假設你已經訓練了一個分類器,該分類器會產生准確但未經校準的概率。概率校準的思想是建立第二個模型(稱為校準器),校準器模型能夠將你訓練的分類器「校準」為實際概率。
因此,校準包括了將一個一維矢量(未校準概率)轉換為另一個一維矢量(已校準概率)的功能。
兩種常被用作校準器的方法:
1、保序回歸:一種非參數演算法,這種非參數演算法將非遞減的自由格式行擬合到數據中。行不會減少這一事實是很重要的,因為它遵從原始排序。
2、邏輯回歸:現在有三種選擇來預測概率:普通隨機森林、隨機森林 + 保序回歸、隨機森林 + 邏輯回歸。
『捌』 什麼是精細三維全過程Python建模
建模的精細度精細三維全過程Python建模
初期建模的時候按照物體的細節在電腦中建模生成,並賦予恰當的貼圖
建模,就是建立模型,就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。建立系統模型的過程,又稱模型化。建模是研究系統的重要手段和前提。凡是用模型描述系統的因果關系或相互關系的過程都屬於建模。
因描述的關系各異,所以實現這一過程的手段和方法也是多種多樣的。可以通過對系統本身運動規律的分析,根據事物的機理來建模;也可以通過對系統的實驗或統計數據的處理,並根據關於系統的已有的知識和經驗來建模。還可以同時使用幾種方法。