最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python圖片合成的示例

 更新時間:2020年11月09日 17:26:28   作者:py3study  
這篇文章主要介紹了python圖片合成的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

python的PIL庫簡直好用的不得了,PIL下面的Image庫更是封裝了很多對圖片處理的函數(shù),關(guān)于Image庫的介紹和使用,看這里:http://effbot.org/imagingbook/image.htm

這里用我半個月前看到的一篇博客寫的demo作為背景,做一下圖片的合成

圖片可以看作是很多像素點組成的,每個像素點都是一個RGB顏色,(red, green, blue), 那么合成兩張照片就有辦法了,我們可以在一張新的RGB色的圖片里一個像素點取圖片一的對應(yīng)位置的像素,下一個像素點取圖片二的像素,直到遍歷完成,代碼如下:

from PIL import Image

##這里采用傳入圖片地址調(diào)用此函數(shù)

#這個方法目前不支持按比例合成,默認為1:1
#各取一個像素點合并,傳入的參數(shù)為兩張圖片的地址
def merge1(img1_address,img2_addess):
 status=100
 #狀態(tài)碼100為正常
 #  200為地址錯誤
 try:
  img1=Image.open(img1_address)
  img2=Image.open(img2_address)
 except:
  status=200
  img_new=""
 else:
  width=min(img1.size[0],img2.size[0])
  height=min(img1.size[1],img2.size[1])
  print(width,height)
  img_new = Image.new('RGB',(width,height))
  for x in range(width):
   for y in range(height):
    if y%2==0:
     pixel=img1.getpixel((x,y))
     img_new.putpixel((x,y),pixel)
    else:
     pixel=img2.getpixel((x,y))
     img_new.putpixel((x,y),pixel)
 finally:
  return img_new,status

上述代碼會返回一張新的圖片和一個狀態(tài)碼,接受的時候用兩個變量接受

另一種方法是每個像素點各取%50的原圖片的顏色,然后把像素點放置在對應(yīng)位置,為了功能更加強大,我把兩者的混合比例設(shè)為可調(diào),默認是50%的比例,代碼如下:

from PIL import Image

#將像素點按比例取色,然后合成一個新像素點
#傳入的參數(shù)為兩張圖片的地址和比例
#如果兩者之和不為1則以第一個圖片的比例為準(zhǔn)
def merge2(img1_address,img2_address,percent1=0.50,percent2=0.50):
 status=100
 #狀態(tài)碼100為正常
 #  200為地址錯誤
 try:
  img1=Image.open(img1_address)
  img2=Image.open(img2_address)
 except:
  status=200
  img_new=""
 else:
  if percent1+percent2!=1:
   percent2=1-percent1
  width = min(img1.size[0],img2.size[0])
  height = min(img1.size[1],img2.size[1])
  img_new = Image.new('RGB',(width,height))
  for x in range(width):
   for y in range(height):
    r1,g1,b1=img1.getpixel((x,y))
    r2,g2,b2=img2.getpixel((x,y))
    r=int(percent1*r1+percent2*r2)
    g=int(percent1*g1+percent2*g2)
    b=int(percent1*b1+percent2*b2)
    img_new.putpixel((x,y),(r,g,b))
 finally:
  return img_new,status

返回的參數(shù)與上述相同
 如果想要保存圖片可用image.save()函數(shù)保存

總的代碼如下:

from PIL import Image

##這里采用傳入圖片地址調(diào)用此函數(shù)

#這個方法目前不支持按比例合成,默認為1:1
#各取一個像素點合并,傳入的參數(shù)為兩張圖片的地址
def merge1(img1_address, img2_addess, direct):
 status=100
 #狀態(tài)碼100為正常
 #  200為地址錯誤
 try:
  img1=Image.open(img1_address)
  img2=Image.open(img2_address)
 except:
  status=200
  img_new=""
 else:
  width=min(img1.size[0], img2.size[0])
  height=min(img1.size[1], img2.size[1])
  print(width,height)
  img_new = Image.new('RGB',(width, height))
  for x in range(width):
   for y in range(height):
    if y%2 == 0:
     pixel = img1.getpixel((x,y))
     img_new.putpixel((x,y), pixel)
    else:
     pixel = img2.getpixel((x,y))
     img_new.putpixel((x,y), pixel)
 finally:
  return status

#將像素點按比例取色,然后合成一個新像素點
#傳入的參數(shù)為兩張圖片的地址和比例
#如果兩者之和不為1則以第一個圖片的比例為準(zhǔn)
def merge2(img1_address, img2_address, direction, percent1):

 status = 100
 #狀態(tài)碼100為正常
 # 200為地址錯誤
 try:
  img1 = Image.open(img1_address)
  img2 = Image.open(img2_address)
 except:
  status = 200
  img_new = ""
 else:
  percent2 = 1 - percent1
  width = min(img1.size[0], img2.size[0])
  height = min(img1.size[1], img2.size[1])
  img_new = Image.new('RGB', (width,height))
  for x in range(width):
   for y in range(height):
    r1,g1,b1=img1.getpixel((x,y))
    r2,g2,b2=img2.getpixel((x,y))
    r = int(percent1 * r1 + percent2 * r2)
    g = int(percent1 * g1 +percent2 * g2)
    b = int(percent1 * b1 +percent2 * b2)
    img_new.putpixel((x,y),(r,g,b))
  img_new.save(direction)
  #img_new.show()
 finally:
  return status
 #切記在接受返回信息時先判斷狀態(tài)碼是否異常,如果正確再執(zhí)行相應(yīng)操作
if __name__=='__main__':

 img1_address = "B:\Picture\YourName\1.jpg"
 img2_address = "B:\Picture\YourName\2.jpg"
 direction = "D:/Python/PyQt/課程設(shè)計/merges/merge9.png"
 status = merge2(img1_address, img2_address, direction, 0.30)
 print(status)

當(dāng)然,我發(fā)現(xiàn)Image庫中有Image.blend(image1, image2, alpha)這個混合圖片的函數(shù),還沒看源碼,不知道他是用什么方法實現(xiàn)的。

原先的兩張照片:

合成后的照片:

 

左圖是方法一,右圖是方法二

優(yōu)劣: 
方法一不易造成曝光過度,因為實際的像素點并沒改動,只是間隔變大了,但這樣可能會造成輪廓不清晰 
方法二在比例適當(dāng)時效果是優(yōu)于方式一的,但比例不合適就會看起來像曝光過度一樣,示例中方法二用的比例是0.3:0.7,又是比例不當(dāng)效果會很糟糕,孰優(yōu)孰劣請按效果好壞使用。

以上就是python圖片合成的示例的詳細內(nèi)容,更多關(guān)于python圖片合成的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pycharm2022.1最新永久激活碼破解補丁一鍵安裝教程免費分享(2022持續(xù)更新)

    pycharm2022.1最新永久激活碼破解補丁一鍵安裝教程免費分享(2022持續(xù)更新)

    更新到Pycharm 2022.2.x版,pycharm2022.2最新可用永久激活碼分享(持續(xù)更新),pycharm激活補丁一鍵安裝簡單方便,無需手動修改文件,兼容蘋果MAC,linux,Windows系統(tǒng)
    2022-07-07
  • Python對切片命名的實現(xiàn)方法

    Python對切片命名的實現(xiàn)方法

    在本篇文章里我們給大家分享了關(guān)于Python對切片命名的實現(xiàn)方法的相關(guān)知識點內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2018-10-10
  • python利用 pytesseract快速識別提取圖片中的文字((圖片識別)

    python利用 pytesseract快速識別提取圖片中的文字((圖片識別)

    本文介紹了tesseract的python調(diào)用,也就是pytesseract庫,其中還有一些其他的內(nèi)容并沒有涉及,僅涉及到了圖片提取文字,如果你對其感興趣,可以深入探索一下,也希望能和我探討一下
    2022-11-11
  • pycharm 在windows上編輯代碼用linux執(zhí)行配置的方法

    pycharm 在windows上編輯代碼用linux執(zhí)行配置的方法

    今天小編就為大家分享一篇pycharm 在windows上編輯代碼用linux執(zhí)行配置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python中Tkinter布局管理grid的使用

    Python中Tkinter布局管理grid的使用

    本文主要介紹了Python中Tkinter布局管理grid的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 一個可以套路別人的python小程序?qū)嵗a

    一個可以套路別人的python小程序?qū)嵗a

    本文通過一段實例代碼給大家分享一個可以套路別人的python小程序,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 使用Python刪除PDF文件名中的特定文字

    使用Python刪除PDF文件名中的特定文字

    在處理大量PDF文件時,有時候我們可能需要對文件名進行批量修改,例如,我們可能需要將文件名中的特定文字刪除或替換,今天,我將向大家介紹如何使用Python編寫一個簡單的程序,選擇一個文件夾,并刪除文件名中的指定文字,需要的朋友可以參考下
    2023-09-09
  • python實現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF

    python實現(xiàn)csdn全部博文下載并轉(zhuǎn)PDF

    我們學(xué)習(xí)編程,在學(xué)習(xí)的時候,會有想把有用的知識點保存下來,我們可以把知識點的內(nèi)容爬下來轉(zhuǎn)變成pdf格式,方便我們拿手機可以閑時翻看,是很方便的,本文就介紹一下如何實現(xiàn)
    2021-06-06
  • python 名稱空間與作用域詳情

    python 名稱空間與作用域詳情

    這篇文章主要介紹了python 名稱空間與作用域詳情,函數(shù)內(nèi)部的函數(shù)只能在函數(shù)內(nèi)部調(diào)用,不能在函數(shù)外部調(diào)用,通過接下來的學(xué)習(xí)你將會知道為什么會出現(xiàn)這種情況。

    2021-10-10
  • 基python實現(xiàn)多線程網(wǎng)頁爬蟲

    基python實現(xiàn)多線程網(wǎng)頁爬蟲

    python是支持多線程的, 主要是通過thread和threading這兩個模塊來實現(xiàn)的,本文主要給大家分享python實現(xiàn)多線程網(wǎng)頁爬蟲,需要的朋友可以參考下
    2015-09-09

最新評論

慈利县| 康定县| 蒙阴县| 黄大仙区| 全州县| 苍梧县| 红原县| 遂昌县| 平南县| 淮阳县| 绿春县| 仪陇县| 青龙| 商丘市| 涡阳县| 秭归县| 七台河市| 密山市| 呼伦贝尔市| 海宁市| 明水县| 辉南县| 车致| 聂拉木县| 达日县| 乳山市| 新乡县| 青冈县| 诸暨市| 湖南省| 页游| 芷江| 新郑市| 南昌市| 霍州市| 湖南省| 安义县| 隆德县| 建水县| 张家界市| 阜南县|