真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python實(shí)現(xiàn)圖像檢索的三種(直方圖/OpenCV/哈希法)-創(chuàng)新互聯(lián)

簡(jiǎn)介:

目前成都創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、安遠(yuǎn)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

本文介紹了圖像檢索的三種實(shí)現(xiàn)方式,均用python完成,其中前兩種基于直方圖比較,哈希法基于像素分布。
檢索方式是:提前導(dǎo)入圖片庫作為檢索范圍,給出待檢索的圖片,將其與圖片庫中的圖片進(jìn)行比較,得出所有相似度后進(jìn)行排序,從而檢索結(jié)果為相似度由高到低的圖片。由于工程中還包含Qt界面類、觸發(fā)函數(shù)等其他部分,在該文檔中只給出關(guān)鍵函數(shù)的代碼。

開發(fā)系統(tǒng):MacOS
實(shí)現(xiàn)方式:Qt + Python

方法一:自定義的直方圖比較算法

a) 基本思路

遍歷圖片像素點(diǎn),提取R\G\B值并進(jìn)行對(duì)應(yīng)的計(jì)數(shù),得到原始直方圖,但由于0-255的范圍太大,因此每一個(gè)像素值的統(tǒng)計(jì)量均偏小,因此分別將R\G\B的256個(gè)像素值映射到0-31共32個(gè)像素值上,將像素值范圍由256*3縮小到32*3。記錄像素值采用的數(shù)據(jù)結(jié)構(gòu)為一維數(shù)組,第1到32個(gè)值為R的像素直方圖,第33到第64個(gè)值為G的像素統(tǒng)計(jì),第65到96個(gè)值為B的像素統(tǒng)計(jì)。得到直方圖后,計(jì)算待檢索圖的直方圖和圖片庫中圖像的直方圖之間的相似性。

b) 具體實(shí)現(xiàn)

用到的函數(shù):

  • split_Img()
  • calc_Hist(img)
  • calc_Similar(h2,h3)
  • calc_Similar_Split(h2,h3)

遍歷圖片的像素點(diǎn)以計(jì)算直方圖:calc_Hist(img)

嘗試了兩種方式,第一種是對(duì)圖像遍歷時(shí)逐個(gè)調(diào)用getpixel()來獲取R,G,B的值,但發(fā)現(xiàn)這種方式的速度太慢。第二種采用的是內(nèi)存讀取,利用load()函數(shù)一次性讀取圖像的像素值,然后對(duì)像素值進(jìn)行遍歷,該方法的速度比逐個(gè)提取更快。

#統(tǒng)計(jì)直方圖,用load()載入圖片的像素pix,再分別讀取每個(gè)像素點(diǎn)的R\G\B值進(jìn)行統(tǒng)計(jì)(分別為0-255)
#將256個(gè)顏色值的統(tǒng)計(jì)情況投影到32個(gè),返回R\G\B投影后的統(tǒng)計(jì)值數(shù)組,共32*3=96個(gè)元素
def calc_Hist(img):
  '''
  #120張圖片,4.43s
  w,h = img.size
  pix = img.load() #載入圖片,pix存的是像素
  calcR = [0 for i in range(0,32)]
  calcG = [0 for i in range(0,32)]
  calcB = [0 for i in range(0,32)]
  for i in range(0,w):
    for j in range(0,h):
      (r,g,b) = pix[i,j]
      #print (r,g,b)
      calcR[r/8] += 1
      calcG[g/8] += 1
      calcB[b/8] += 1
  calcG.extend(calcB)
  calcR.extend(calcG)

  return calcR
  '''
  #120張圖,3.49s

  w,h = img.size
  pix = img.load() #載入圖片,pix存的是像素
  calcR = [0 for i in range(0,256)]
  calcG = [0 for i in range(0,256)]
  calcB = [0 for i in range(0,256)]
  for i in range(0,w):
    for j in range(0,h):
      (r,g,b) = pix[i,j]
      #print (r,g,b)
      calcR[r] += 1
      calcG[g] += 1
      calcB[b] += 1
  calcG.extend(calcB)
  calcR.extend(calcG) #256*3

  #calc存放最終結(jié)果,32*3
  calc = [0 for i in range(0,96)]
  step = 0 #calc的下標(biāo),0~95
  start = 0 #每次統(tǒng)計(jì)的開始位置
  while step < 96:
    for i in range(start,start+8): #8個(gè)值為1組,統(tǒng)計(jì)值相加,eg:色彩值為0~7的統(tǒng)計(jì)值全部轉(zhuǎn)換為色彩值為0的統(tǒng)計(jì)值
      calc[step] += calcR[i]
    start = start+8
    step += 1
  #print calc 
  return calc 

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


名稱欄目:python實(shí)現(xiàn)圖像檢索的三種(直方圖/OpenCV/哈希法)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/csdhjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部