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 圖像邊框填充混合內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533977.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql5.7.21備份腳本_Shell腳本使用匯總整理——mysql數據庫5.7.8以后備份腳本

#!/bin/sh#db_backups_conf.txt文件路徑db_backups_conf"/wocloud/shell/db_backups_conf.txt"#判斷文件是否存在if [ -f "${db_backups_conf}" ];thenecho $(date %Y-%m-%d %H:%M:%S)" 數據庫配置信息文件存在,開始進行數據備份"#獲…

python嵌套列表操作_python基礎(list列表的操作,公共方法,列表嵌套,元祖)...

list 列表索引,切片與str相同。列表的操作(增刪改查)1,增加.append()  追加,增加到最后li [alex,wusir,egon,女神,taibai]li.append(ppp)print(li).insert()  中間插入,通過索引li [alex,wusir,egon,女神,taibai]li.insert(…

mybatis mysql selectkey_Mybatis示例之SelectKey的應用

SelectKey在Mybatis中是為了解決Insert數據時不支持主鍵自動生成的問題,他可以很隨意的設置生成主鍵的方式。不管SelectKey有多好,盡量不要遇到這種情況吧,畢竟很麻煩。SelectKey需要注意order屬性,像Mysql一類支持自動增長類型的…

python程序設計上機實踐第三章答案_20192419 實驗三《Python程序設計》實驗報告

學號 2019-2020-2 《Python程序設計》實驗3報告課程:《Python程序設計》班級:1924姓名: 萬騰陽學號:20192419實驗教師:王志強實驗日期:2020年5月16日必修/選修: 公選課1.實驗內容創建服務端和客…

完成數獨的算法 python_python實現數獨算法實例

本文實例講述了python實現數獨算法的方法。分享給大家供大家參考。具體如下:# -*- coding: utf-8 -*-Created on 2012-10-5author: Administratorfrom collections import defaultdictimport itertoolsa [[ 0, 7, 0, 0, 0, 0, 0, 0, 0], #0[ 5, 0, 3, 0, 0, 6, 0, …

python讀取多個文件csv_Python:讀取多個文本文件并寫入相應的csv文件

我在別處找不到這個問題的答案,所以我將繼續把它貼在這里:我有一個Python腳本,它將讀取文本文件的內容,將其內容拆分為單詞,然后輸出一個CSV文件,該文件將文本縮減為單詞頻率列表。(最后,我將插…

java treetable_在Swing中創建TreeTable | 學步園

TreeTable是Tree和Table的一個結合-就是一個即能夠展開和收起行,同時也能夠顯示多個列的組件。在Swing的標準包里沒有一個叫做JtreeTable的組件,但是我們很容易通過把Jtree做成Jtable的渲染器來創建一個這樣的組件。這篇文章就是關于如何使用…

python爬去微博十大流行語_用python重新定義【2019十大網絡流行語】-后臺/架構/數據庫-敏捷大拇指-一個敢保留真話的IT精英社區...

↑關注 置頂 ~ 有趣的不像個技術號52568040f9313098ffa367d9d9d21437.jpg (5.73 KB, 下載次數: 0)2019-12-10 04:43 上傳3f4d5fe0016d011a7a68af763314befd.jpg (1.06 KB, 下載次數: 0)2019-12-10 04:43 上傳“文明互鑒真硬核,融梗檸檬誰覺得。霸凌第一九九六&…

java中怎么獲取配置文件的值_java如何獲取配置文件的值

轉:原創 編碼小王子 發布于2018-10-11 18:07:52 閱讀數 2722 收藏展開java大型項目中都會很多系統常量,比如說數據庫的賬號和密碼,以及各種token值等,都需要統一的管理,如果零落的散布到各個類等具體的代碼中的話,在后期管理上將是一場災難,所有需要對這些變量進行統…

python實現隊列_用Python實現的數據結構與算法:隊列

一、概述隊列(Queue)是一種先進先出(FIFO)的線性數據結構,插入操作在隊尾(rear)進行,刪除操作在隊首(front)進行。二、ADT隊列ADT(抽象數據類型)一般提供以下接口:Queue() 創建隊列enqueue(item) 向隊尾插入項dequeue() 返回隊首的項&#xf…

java 監聽窗口是否改變_JAVA項目監聽文件是否發生變化

一.spring容器都初始化完成之后做操作packagecom.bijian.study.listener;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.ApplicationListener;importorg.springframework.context.event.ContextRefreshedEvent;importorg.s…

笨辦法學python3 pdf 腳本之家_解決python3輸入的坑——input()

如下所示:a,b,c,d input()很簡單的代碼,如果輸入為1 -1 -2 3結果會報錯,原因在于input函數會將你的輸入作為python腳本運行,那么輸入就變成了1-1 -2 3,即0 -2 3結果當然是錯誤的了,解決辦法就是將輸入用引…

java 數組寫法_java書寫、數據類型、數組定義

這里只記錄java與php、javascript不同的地方,相同的地方就不贅述了。1.java文件源碼為以.java為后綴的文件,字節碼文件是以.class為后綴的文件。2.寫好一個java源碼之后,cmd進入源碼文件盤符,用命令 javac helloworld.java將源碼轉…

python爬蟲高級知識點_Python爬蟲知識點梳理總結,殿堂級小白入門必讀

數據分析是任何技術一樣。你應該學習的目標。目標就像燈塔,指引你前進。我見過很多合作伙伴學習學習,然后學會放棄。事實上,很大一部分原因是沒有明確的目標,所以你必須清楚學習的目的。你準備學習爬行之前,問問你自己為什么你想學爬行。有些人為了工作,一些為了好玩,和做一定黑…

java running_Running

/****/package test;import java.sql.ResultSet;import java.sql.SQLException;/*** author huangqin**/public class QuestString {private int curPage;//當前頁數private int maxPage;//最大頁數private int maxRowCount;//總記錄數private int pageSize2;//每頁顯示的記錄數…

python停用詞表_多版本中文停用詞詞表 + 多版本英文停用詞詞表 + python詞表合并程序...

文章簡介與更新記錄如果你只想獲取中文停用詞此表,請直接到文章結尾下載項目文件,其中包括三個中文停用詞詞表,一個英文停用詞詞表和一個合并詞表的.py文件2017/07/04 創建文章,上傳文件2017/07/04 更新了合并代碼,添加了新的中文停用詞表(哈工大擴展版本)和一個新的停用詞表,現…

mysql collect_set_hive列轉行 (collect_set())

一、問題hive如何將a b 1a b 2a b 3c d 4c d 5c d 6變為:a b 1,2,3c d 4,5,6二、數據test.txta b 1a b 2a b 3c d …

python編寫遞歸函數和非遞歸函數、輸出斐波那契數列_分別用非遞歸和遞歸的方法編寫函數求斐波那契數列第n項。斐波那契數列1,1,2,3,5,8,13,…...

展開全部/**已知Fibonacci數列&#xff1a;1,1,2,3,5,8,……&#xff0c;F(1)1&#xff0c;F(2)1&#xff0c;F(n)F(n-1)F(n-2)*/#include #include typedef long long int int64;//方法1&#xff0c;遞歸法int64 Fibonacci(int n){int64 sum;if(n<0){printf("參數值e6…

python3.6安裝ipython_centos6.5下安裝python3.6、pip、ipython

一.先更換系統源為了下載順暢一般都會更改為國內源。1 cd /etc/yum.repos.d/2 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #下載網易源3 mv CentOS-Base.repo CentOS-Base.repo.ori #備份源4 mv CentOS6-Base-163.repo CentOS-Base.repo #把網易源更改為默認源二…

java 多線程的同步問題_java多線程解決同步問題的幾種方式,原理和代碼

wait()/notify()方法await()/signal()方法BlockingQueue阻塞隊列方法PipedInputStream/PipedOutputStream阻塞隊列的一個簡單實現&#xff1a;public class BlockingQueue {private List queue new LinkedList();private int limit 10;public BlockingQueue(int limit){this…