當前位置:首頁 » 編程語言 » pythonimaging

pythonimaging

發布時間: 2022-09-09 18:50:30

A. 如何安裝python圖型處理庫Python Imaging Library

在Python中對圖片的處理採用了PIL庫,這個庫可用於圖片的一些常用操作,如改變尺寸、格式、色彩、旋轉等處理。
首先要先安裝Python(在這里不做介紹)。
安裝完Python後,安裝PIL庫就非常簡單了,只需按如下步驟進行
1、下載PIL的Source Kit(因為這個包支持全部平台) Imaging--1.1.6.tar.gz

2、解壓縮包 tar -zxvf Imaging-1.1.6.tar.gz
3、進入到解壓後的目錄 cd Imaging-1.1.6
4、Build pakage: python setup.py build_ext -i
5、測試; python selftest.py
6、安裝 python setup.py install
執行完上述操作後,可以直接在程序用使用 import Image進行使用PIL中的Image類

B. Python如何圖像識別

首先,先定位好問題是屬於圖像識別任務中的哪一類,最好上傳一張植物葉子的圖片。因為目前基於深度學習的卷積神經網路(CNN)確實在圖像識別任務中取得很好的效果,深度學習屬於機器學習,其研究的範式,或者說處理圖像的步驟大體上是一致的。

1、第一步,准備好數據集,這里是指,需要知道輸入、輸出(視任務而定,針對你這個問題,建議使用有監督模型)是什麼。你可以准備一個文件夾,裡面存放好植物葉子的圖像,而每張圖像對應一個標簽(有病/沒病,或者是多類別標簽,可能具體到哪一種病)。
具體實現中,會將數據集分為三個:訓練集(計算模型參數)、驗證集(調參,這個經常可以不需要實現劃分,在python中可以用scikit-learn中的函數解決。測試集用於驗證模型的效果,與前面兩個的區別是,模型使用訓練集和驗證集時,是同時使用了輸入數據和標簽,而在測試階段,模型是用輸入+模型參數,得到的預測與真實標簽進行對比,進而評估效果。
2、確定圖像識別的任務是什麼?

圖像識別的任務可以分為四個:圖像分類、目標檢測、語義分割、實例分割,有時候是幾個任務的結合。
圖像分類是指以圖像為輸入,輸出對該圖像內容分類的描述,可以是多分類問題,比如貓狗識別。通過足夠的訓練數據(貓和狗的照片-標簽,當然現在也有一系列的方法可以做小樣本訓練,這是細節了,這里並不敞開講),讓計算機/模型輸出這張圖片是貓或者狗,及其概率。當然,如果你的訓練數據還有其它動物,也是可以的,那就是圖像多分類問題。
目標檢測指將圖像或者視頻中的目標與不感興趣的部分區分開,判斷是否存在目標,並確定目標的具體位置。比如,想要確定這只狗所佩戴的眼睛的位置,輸入一張圖片,輸出眼睛的位置(可視化後可以講目標區域框出來)。

看到這里,應該想想植物葉子診斷疾病的問題,只需要輸入一整張植物葉子的圖片,輸出是哪種疾病,還是需要先提取葉子上某些感興趣區域(可能是病變區域),在用病變區域的特徵,對應到具體的疾病?
語義分割是當今計算機視覺領域的關鍵問題之一,宏觀上看,語義分割是一項高層次的任務。其目的是以一些原始圖像作為輸入,輸出具有突出顯示的感興趣的掩膜,其實質上是實現了像素級分類。對於輸入圖片,輸出其舌頭區域(注意可以是不規則的,甚至不連續的)。

而實例分割,可以說是在語義分割的基礎上,在像素層面給出屬於每個實例的像素。

看到這里,可以具體思考下自己的問題是對應其中的哪一類問題,或者是需要幾種任務的結合。

3、實際操作
可以先通過一個簡單的例子入手,先了解構建這一個框架需要准備什麼。手寫數字識別可以說是深度學習的入門數據集,其任務也經常作為該領域入門的案例,也可以自己在網上尋找。

C. Python 3.3 PIL : The _imaging C mole is not installed

首先,檢查一下你是否有_imaging模塊。
在windows平台下看看有沒有_imaging.pyd文件(有些情況為_imaging.dll),我的目錄為C:\Python27\Lib\site-packages\PIL,在Unix下找個叫_imaging.so 或者_imagingmole.so
的文件,有些Unix的平台的擴展名可能為.sl。
以下方法用於檢查目錄:
打開命令提示符輸入python -v ,再輸入import Image
另外一種方法是import sys,然後print sys.path

最後,如果到此都行,在交互模式下輸入import _imaging還提示
那你再檢查一下,安裝的PIL 是否跟你的電腦匹配,32位還是64位。重新安裝

D. 執行這段腳本的時候 ./setup-seafile-mysql.sh 提示沒有安裝python-imaging 可是我真真的已經安裝了

如果是這樣的話就是你檢測函數的問題啦。
你檢測函數是不是檢測了python-imaging的版本號。你安裝的和你檢測的不是同一個版本。

E. python有什麼比較好的圖像顏色相似度對比的庫么

需要使用Python Imaging Library,下代是python2.x的代碼:

from itertools import izip

import Image
i1 = Image.open("image1.jpg")
i2 = Image.open("image2.jpg")
assert i1.mode == i2.mode, "Different kinds of images."
assert i1.size == i2.size, "Different sizes."
pairs = izip(i1.getdata(), i2.getdata())
if len(i1.getbands()) == 1:
# for gray-scale jpegs
dif = sum(abs(p1-p2) for p1,p2 in pairs)
else:
dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))
ncomponents = i1.size[0] * i1.size[1] * 3
print "Difference (percentage):", (dif / 255.0 * 100) / ncomponents

F. 用Python的PIL模塊的image模塊打開的圖片位於哪個文件夾

你所問的問題,其實是屬於: 1.先參考 【教程】Python中的內置的模塊 和第三方的模塊 搞懂PIL是屬於第三方Python模塊 2.再參考: 【待完善】【總結】Python安裝第三方的庫、package的方法 去安裝PIL模塊。 3.關於PIL的一些使用,可以參考: 【已解決】Python中通過Image的open之後,去show結果打不開bmp圖片,無法正常顯示圖片 再針對PIL來說就是: 1. 這里不給貼地址,所以只能靠你自己用google搜: python pil 第一個就是: Python Imaging Library (PIL) 點擊進去後,找到自己python版本的PIL,比如: Python Imaging Library 1.1.7 for Python 2.7 (Windows only) 下載,雙擊,安裝,即可。 2. 如果下載到的是PIL源碼, 則打開cmd,切換到其目錄 然後執行 setup.py install 就可以通過源碼方式安裝了。 這些方法,上面帖子其實都有總結的。

G. 使用Python 製作對比圖片相似度的程序

import media

def red_average(pic):
'''Return an integer that represents the average red of the picture.
'''
total=0
for pixel in pic:
total = total + media.get_red(pixel)
red_average = total / (media.get_width(pic)*media.get_height(pic))

return red_average

def green_average(pic):
'''Return an integer that represents the average green of the picture
'''
total = 0
for pixel in pic:
total = total + media.get_green(pixel)
green_average = total / (media.get_width(pic)*media.get_height(pic))

return green_average

def blue_average(pic):
'''Return an integer that represents the average blue of the picture
'''
total = 0
for pixel in pic:
total = total + media.get_blue(pixel)
blue_average = total / (media.get_width(pic)*media.get_height(pic))

return blue_average

def scale_red(pic, value):
'''Return the picture that the average of the red is value which has been set.
'''

averaged = red_average(pic)
factor = float(value) / averaged
for pixel in pic:

new_red = min(255, int(factor * media.get_red(pixel)))

media.set_red(pixel,new_red)

return pic

def scale_green(pic, value):
'''Return the picture that the average of the green is value which has been set.
'''

averaged = green_average(pic)
factor = float(value) / averaged
for pixel in pic:

new_green = min(255, int(factor * media.get_green(pixel)))

media.set_green(pixel,new_green)

return pic

def scale_blue(pic, value):
'''Return the picture that the average of the blue is value which has been set.
'''

averaged = blue_average(pic)
factor = float(value) / averaged
for pixel in pic:

new_blue = min(255, int(factor * media.get_blue(pixel)))

media.set_blue(pixel,new_blue)

return pic

def expand_height(pic, factor):
'''Return a newpicture that has been vertically stretched by the factor which has been set.
'''
new_width = pic.get_width()
new_height = pic.get_height()*factor
newpic = media.create_pic(new_width, new_height, media.black)
for pixel in pic:
x = media.get_x(pixel)
y = media.get_y(pixel)
newpixel = media.get_pixel(newpic, x, y*factor)
for newpixel in newpic:
new_red = media.get_red(pixel)
new_green = media.get_green(pixel)
new_blue = media.get_blue(pixel)
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic

def expand_width(pic,factor):
'''Return a newpicture that has been horizontally stretched by the factor which has been set.
'''
new_width = pic.get_width() * factor
new_height = pic.get_height()
newpic = media.create_pic(new_width,new_height,media.black)
for newpixel in newpic:
x = media.get_x(newpixel)
y = media.get_y(newpixel)
pixel = media.get_pixel(pic,x / factor, y)
new_red = media.get_red(pixel)
new_green = media.get_green(pixel)
new_blue = media.get_blue(pixel)
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic

def rece_height(pic, factor):
'''return a new pic that has been compressed vertically by the factor which has been set
'''

# Create a new, all-black pic with the appropriate new height and
# old width; (all colour components are zero).

new_width = pic.get_width
new_height = (pic.get_height() - 1) / factor + 1
newpic = media.create_pic(new_width, new_height, media.black)

# Iterate through all the pixels in the original (large) image, and
# a portion of each pixel's colour components into the correct
# pixel position in the smaller image.
for pixel in pic:
# Find the corresponding pixel in the new pic.
x = media.get_x(pixel)
y = media.get_y(pixel)
newpixel = media.get_pixel(newpic, x, y / factor)

# Add the appropriate fraction of this pixel's colour components
# to the components of the corresponding pixel in the new pic.
new_red = newpixel.get_red()+pixel.get_red()/factor
new_green = newpixel.get_green()+pixel.get_green()/factor
new_blue = newpixel.get_blue()+pixel.get_blue()/fctor
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic

def rece_width(pic,factor):
'''Return a newpic that has been horizontally compressed by the factor which has been set.
'''
new_width = (media.get_width() - 1) / factor + 1
new_height = media.get_height()
newpic = media.create_pic(new_width, new_height, media.black)
for pixel in pic:
x = media.get_x(pixel)
y = media.get_y(pixel)
new_pixel = media.get_pixel(newpic, x / factor, y)
new_red = newpixel.get_red() + pixel.get_red() / factor
new_green = newpixel.get_green() + pixel.get() / factor
new_blue = newpixel.get_blue() + pixel.get()/factor
media.set_red(newpixel, new_red)
media.set_green(newpixel, new_green)
media.set_blue(newpixel, new_blue)
return newpic

def distance(pixel1, pixel2):
red1 = media.get_red(pixel1)
green1 = media.get_green(pixel1)
blue1 = media.get_blue(pixel1)
red2 = media.get_red(pixel2)
green2 = media.get_green(pixel2)
blue2 = media.get_blue(pixel2)
sum = abs(red1 -red2) + abs(green1 - green2) + abs(blue1 - blu2)
return sum

def simple_difference(pic1, pic2):
for pixel in pic1:
x = media.get_x(pixel)
y = media.get_y(pixel)
pixel2 = media.get_pixel(pic2, x, y)
sum = media.distance(pixel, pixel2)
return sum

def smart_difference(pic1,pic2):
height1 = media.get_height(pic1)
height2 = media.get_height(pic2)
factorh = float(height1 / height2)
if factorh >= 1:
height1 = media.rece_height(pic1, factorh)
else:
height2 = media.rece_height(pic2, 1 / factorh)

width1 = media.get_width(pic1)
width2 = media.get_width(pic2)
factorw = float(width1 / width2)
if factorw >= 1:
width1 = rece_width(pic1, factorw)
else:
width2 = rece_width(pic2, 1 / factorw)

red1 = red_average(pic1)
green1 = green_average(pic1)
blue1 = blue_average(pic1)
red2 = media.scale_red(pic2, red1)
green2 = media.scale_green(pic2, green1)
blue2 = media.scale_blue(pic2, blue1)

#if __name__ == '__main__':
#media.show(newpic)

熱點內容
監控器壓縮 發布:2025-01-12 22:51:29 瀏覽:247
android加密工具 發布:2025-01-12 22:51:19 瀏覽:895
伺服器ip是東方有線 發布:2025-01-12 22:32:07 瀏覽:842
數據源碼補碼 發布:2025-01-12 22:29:41 瀏覽:867
魅族賬號密碼忘記怎麼辦啊 發布:2025-01-12 22:05:12 瀏覽:510
ps工作需要什麼配置電腦 發布:2025-01-12 21:52:22 瀏覽:606
福州優信解壓 發布:2025-01-12 21:50:40 瀏覽:430
會員過期緩存的能看嗎不聯網 發布:2025-01-12 21:16:47 瀏覽:769
演算法工作原理 發布:2025-01-12 20:36:38 瀏覽:26
網路訪問監控軟體 發布:2025-01-12 20:26:57 瀏覽:466