日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...

發布時間:2025/3/8 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像邊框的實現

圖像邊框設計的主要函數

cv.copyMakeBorder()——實現邊框填充

主要參數如下:

參數一:源圖像——如:讀取的img

參數二——參數五分別是:上下左右邊的寬度——單位:像素

參數六:邊框類型:

cv.BORDER_CONSTANT——cv.BORDER_REPLICATE——cv.BORDER_REFLECT——cv.BORDER_WRAP——cv.BORDER_REFLECT_101——cv.BORDER_TRANSPARENT——cv.BORDER_REFLECT101——cv.BORDER_DEFAULT——cv.BORDER_ISOLATED

參數七——只在邊框類型選擇borderType == BORDER_CONSTANT,才設置,意為邊框值

邊框類型的說明:

BORDER_CONSTANT:意為添加指定顏色的邊框——由value值確定:為list

其它參數:(可根據需要調制,不過一般前兩個用的多一些)

代碼實例

import cv2 as cv

import numpy as np

if __name__ == "__main__":

img = cv.imread('./imag_in_save/open_class.png')

cv.namedWindow('imag', cv.WINDOW_NORMAL)

cv.resizeWindow('imag', 500, 500)

img = cv.copyMakeBorder(img, 20, 20, 20, 20, cv.BORDER_CONSTANT, value=[2, 83, 13]) # 添加邊框

cv.imshow('imag', img)

cv.waitKey(0)

cv.destroyAllWindows()

效果

圖像混合的實現

圖像混合實現的主要函數

cv.addWeighted()——實現圖像的混合

它的工作原理采用的是一個簡單權重公式:g(x)=(1?α)f0(x)+αf1(x)

第一個參數為一張圖象,緊跟著第二個參數為第一張圖片的權重(0~1)也就是公式里的(1 - α)

第三個參數為另一張需要混合的圖片,同樣的,第四個參數為這張圖片的權重,也就是公式里的(α)

至于第五個參數:每個對應標量的和值——可以設置混合的高光

其它兩個參數:(最后的一個參數單獨用的不是很多,在一些其他處理中用的比較多)

dst?輸出數組,其大小和通道數與輸入數組相同(我們一般通過直接返回得到~)

dtype?輸出數組的可選深度;當兩個輸入數組的深度相同時,可以將dtype設置為-1,這等效于src1.depth()

代碼實例

import cv2 as cv

import numpy as np

if __name__ == "__main__":

img1 = cv.imread(r'./2.png', 1) # 讀取彩色圖片

img2 = cv.imread(r'./3.png', 1)

cv.namedWindow('imag', cv.WINDOW_NORMAL) # 窗體

img1 = img1[0: 200, 0: 400] # 截取圖像的指定部分——因為圖像混合需要等大的圖像

img2 = img2[0: 200, 0: 400]

img = cv.addWeighted(img1, 0.7, img2, 0.3, 0) # 混合圖片——根據權重

while True:

cv.imshow('imag', img) # 顯示當前序列號圖片

k = cv.waitKey(0) & 0xFF

if k == 27:

break

cv.destroyAllWindows()

效果

小練習(產生類似幻燈片漸變的效果)

主要思路

首先準備好一系列等大的圖片或者截取一系列相同大小的圖片區域作為我們的圖像數據

然后將圖像信息,分別拼接到一個list列表中

然后,實現一張一張圖片的顯示,在交換的間隙,實現漸變的效果——也就是圖像混合。

然后就可以欣賞了——不過效果的話,主要看設置的參數吧(當然因為沒有渲染,可能還是有些僵硬)。

代碼示例

我把主要注釋放在代碼中,邊看邊理解應該不難~

import cv2 as cv

import numpy as np

if __name__ == "__main__":

img_list = [] # 創建一個空序列裝準備顯示的一系列圖片

counts = 0 # 顯示圖片的序號

cv.namedWindow('imag', cv.WINDOW_NORMAL) # 窗體

cv.resizeWindow('imag', 500, 500)

for i in range(2, 7): # 遍歷圖片,憑借到空數組中——一共5張

img = cv.imread(f'./imag_in_save/scr/{i}.png') # 用f""實現參數傳入

img = img[0: 200, 0: 400] # 截取圖像的指定部分——因為圖像混合需要等大的圖像

img_list.append(img) # 實現圖片添加

while True:

cv.imshow('imag', img_list[counts]) # 顯示當前序列號圖片

k = cv.waitKey(2000) & 0xFF

counts += 1 # 循環下一張圖片——0,1,2,3,4有效

if counts == 5: # 循環到最后一張圖片后返回到第一張圖片

counts = 0

for i in range(0, 10):

k_f = cv.addWeighted(img_list[counts - 1], 1 - (i * 0.1), img_list[counts], i * 0.1, 0) # 做類似漸變的圖像合成

# 實現兩張(當前圖片和接下來顯示的圖片)圖片,不同權重的混合——由于照片權重改變來實現漸變

cv.imshow('imag', k_f) # 顯示混合的圖片

k = cv.waitKey(120) & 0xFF # 延時和按鍵讀取

if k == 27: # ESC鍵

break

if k == 27:

break

cv.destroyAllWindows()

效果(圖片可能不是很明顯,如有需要可以自己添置幾張圖片實現看看)

總結

到此這篇關于python opencv 圖像邊框(填充)添加及圖像混合(末尾實現類似幻燈片漸變的效果)的文章就介紹到這了,更多相關opencv 圖像邊框填充混合內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

總結

以上是生活随笔為你收集整理的python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。