国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用OpenCV-Python圖形圖像處理制作出雪花飄落特效詳解

新機器視覺 ? 來源:CSDN技術社區 ? 作者:LaoYuanPython ? 2021-04-14 14:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

效果展示

首先看一下目標效果:

素材準備 & 思路分析

本次雪花來源于如下圖片

背景可以是任意圖片,下面是老猿在網上找到的一張珠峰圖像

珠峰背景的天空飄落著紛紛揚揚的雪花,意境不錯吧?

實現思路

要實現雪花飄落,單張圖片的單次顯示肯定不夠,需要不停循環顯示圖片,并且在每次圖片顯示時,生成新的雪花并更新圖片中已有雪花的位置,這就需要將圖片中每個雪花的位置精確管理。

自然界的雪花大小是不同的,因此為了提升逼真效果,還需要使得雪花大小在一定范圍內隨機變化和旋轉。

不停產生大小不同的雪花,如果每次產生雪花都對雪花進行變換其實浪費了系統的資源,因此為了提升處理性能,只在程序開始初始化時一次批量生產各種不同大小、不同旋轉角度的各種雪花,后續程序生成雪花時,直接從批量生成的雪花中取一個作為要生成的雪花,而不用每次從基本的雪花圖像開始進行變換。

關鍵實現代碼

1、生成各種雪花形狀

def initSnowShapes(): “”“ 從文件中讀入雪花圖片,并進行不同尺度的縮小和不同角度的旋轉從而生成不同的雪花形狀,這些雪花形狀保存到全局列表中snowShapesList ”“” global snowShapesList imgSnow = readImgFile(r‘f:picsnow.jpg’) imgSnow = cv2.resize(imgSnow, None, fx=0.2, fy=0.2) #圖片文件中的雪花比較大,需要縮小才能象自然的雪花形象 minFactor,maxFactor = 50,100 #雪花大小在imgSnow的0.5-1倍之間變化

for factor in range(minFactor,maxFactor,5): #每次增加5%大小 f = factor*0.01 imgSnowSize = cv2.resize(imgSnow, None, fx=f, fy=f) for ange in range(0,360,5):#雪花0-360之間旋轉 imgRotate = rotationImg(imgSnowSize,ange) snowShapesList.append(imgRotate)

2、產生一排雪花

def generateOneRowSnows(width,count): “”“ 產生一排雪花對象,每個雪花隨機從snowShapesList取一個、橫坐標位置隨機、縱坐標初始為0 :param width: 背景圖像寬度 :param count: 希望的雪花數 一個包含產生的多個雪花對象信息的列表,每個列表的元素代表一個雪花對象,雪花對象包含三個信息,在snowShapesList的索引號、初始x坐標、初始y坐標(才生成固定為0) ”“” global snowShapesList line = [] picCount = len(snowShapesList) for loop in range(count): imgId = random.randint(0,picCount-1) xPos = random.randint(0,width-1) line.append((imgId,xPos,0)) return line

3、將所有雪花對象融合到背景圖像

def putSnowObjectToImg(img): “”“ 將所有snowObjects中的雪花對象融合放到圖像img中,融合時y坐標隨機下移一定高度,x坐標左右隨機小范圍內移動 ”“” global snowShapesList,snowObjects horizontalMaxDistance,verticalMaxDistance = 5,20 #水平方向左右漂移最大值和豎直方向下落最大值 snowObjectCount = len(snowObjects) rows,cols = img.shape[0:2] imgResult = np.array(img) for index in range(snowObjectCount-1,-1,-1): imgObj = snowObjects[index] #每個元素為(imgId,x,y) if imgObj[2]》rows: #如果雪花的起始縱坐標已經超出背景圖像的高度(即到達背景圖像底部),則該雪花對象需進行失效處理 del(snowObjects[index]) else: imgSnow = snowShapesList[imgObj[0]] x,y = imgObj[1:] #取該雪花上次的位置 x = x+random.randint(-1*horizontalMaxDistance,horizontalMaxDistance) #橫坐標隨機左右移動一定范圍 y = y+random.randint(1,verticalMaxDistance) #縱坐標隨機下落一定范圍 snowObjects[index] = (imgObj[0],x,y) #更新雪花對象信息 imgResult = addImgToLargeImg(imgSnow,imgResult,(x,y),180) #將所有雪花對象圖像按照其位置融合到背景圖像中 return imgResult #返回融合圖像

4、主函數

主函數讀入背景圖片,初始化雪花形狀列表,然后循環自頂部產生一排新的雪花,并將所有雪花對象動態調整位置后融合到背景圖像,每200毫秒循環一次,直至按ESC退出。

def main(): global snowShapesList,snowObjects bg = readImgFile(r‘f:picQomolangma2.jpg’) initSnowShapes() rows,cols = bg.shape[:2] maxObjsPerRow = int(cols/100)

while(True): snowObjects += generateOneRowSnows(cols,random.randint(0,maxObjsPerRow)) result = putSnowObjectToImg(bg) cv2.imshow(‘result’,result) ch = cv2.waitKey(200) if ch==27:break

主程序完整代碼及雪花飄落效果

5.1、 主程序完整代碼

# -*- coding: utf-8 -*-import cv2,randomimport numpy as np

from opencvPublic import addImgToLargeImg,readImgFile,rotationImgsnowShapesList = [] #雪花形狀列表snowObjects=[] #圖片中要顯示的所有雪花對象

def initSnowShapes(): “”“ 從文件中讀入雪花圖片,并進行不同尺度的縮小和不同角度的旋轉從而生成不同的雪花形狀,這些雪花形狀保存到全局列表中snowShapesList ”“” global snowShapesList imgSnow = readImgFile(r‘f:picsnow.jpg’) imgSnow = cv2.resize(imgSnow, None, fx=0.2, fy=0.2) #圖片文件中的雪花比較大,需要縮小才能象自然的雪花形象 minFactor,maxFactor = 50,100 #雪花大小在imgSnow的0.5-1倍之間變化

for factor in range(minFactor,maxFactor,5): #每次增加5%大小 f = factor*0.01 imgSnowSize = cv2.resize(imgSnow, None, fx=f, fy=f) for ange in range(0,360,5):#雪花0-360之間旋轉,每次旋轉角度增加5° imgRotate = rotationImg(imgSnowSize,ange) snowShapesList.append(imgRotate)

def generateOneRowSnows(width,count): “”“ 產生一排雪花對象,每個雪花隨機從snowShapesList取一個、橫坐標位置隨機、縱坐標初始為0 :param width: 背景圖像寬度 :param count: 希望的雪花數 當前行對應的豎直坐標 一個包含產生的多個雪花對象信息的列表,每個列表的元素代表一個雪花對象,雪花對象包含三個信息,在snowShapesList的索引號、初始x坐標、初始y坐標(才生成固定為0) ”“” global snowShapesList line = [] picCount = len(snowShapesList) for loop in range(count): imgId = random.randint(0,picCount-1) xPos = random.randint(0,width-1) line.append((imgId,xPos,0)) return line

def putSnowObjectToImg(img): “”“ 將所有snowObjects中的雪花對象融合放到圖像img中,融合時y坐標隨機下移一定高度,x坐標左右隨機小范圍內移動 ”“” global snowShapesList,snowObjects horizontalMaxDistance,verticalMaxDistance = 5,20 #水平方向左右漂移最大值和豎直方向下落最大值 snowObjectCount = len(snowObjects) rows,cols = img.shape[0:2] imgResult = np.array(img) for index in range(snowObjectCount-1,-1,-1): imgObj = snowObjects[index] #每個元素為(imgId,x,y) if imgObj[2]》rows: #如果雪花的起始縱坐標已經超出背景圖像的高度(即到達背景圖像底部),則該雪花對象需進行失效處理 del(snowObjects[index]) else: imgSnow = snowShapesList[imgObj[0]] x,y = imgObj[1:] #取該雪花上次的位置 x = x+random.randint(-1*horizontalMaxDistance,horizontalMaxDistance) #橫坐標隨機左右移動一定范圍 y = y+random.randint(1,verticalMaxDistance) #縱坐標隨機下落一定范圍 snowObjects[index] = (imgObj[0],x,y) #更新雪花對象信息 imgResult = addImgToLargeImg(imgSnow,imgResult,(x,y),180) #將所有雪花對象圖像按照其位置融合到背景圖像中 return imgResult #返回融合圖像

def main(): global snowShapesList,snowObjects

initSnowShapes() bg = readImgFile(r‘f:picQomolangma2.jpg’) rows,cols = bg.shape[:2] maxObjsPerRow = int(cols/100)

while(True): snowObjects += generateOneRowSnows(cols,random.randint(0,maxObjsPerRow)) result = putSnowObjectToImg(bg) cv2.imshow(‘result’,result) ch = cv2.waitKey(200) if ch==27:break

main()

總結

本文介紹了通過OpenCV-Python以特定圖像為背景制作雪花飄落特效的實現思路、關鍵函數功能以及主程序的完整代碼。雪花飄落特效實際上屬于圖像融合的操作,只要掌握圖像融合的基礎知識以及設計后實現思路,實現起來還是比較快的,效果也挺不錯。結合上面代碼,大家還可以調整雪花的大小以及飄雪的密集程度。

以上實現過程需要注意:

1、雪花圖片一般會比圖片需要的效果大,怎么縮小到合適的大小需要多試一下,下面是才開始將原始圖片只縮寫一半之后的效果。

可以看到該效果就不太讓人滿意。

2、控制好雪花左右移動以及下落的速度和幅度,太快、太慢以及幅度過大或過小都不太象在雪花飄落。
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OpenCV
    +關注

    關注

    33

    文章

    652

    瀏覽量

    44799
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90039

原文標題:OpenCV-Python圖形圖像處理:制作雪花飄落特效

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【上海晶珩睿莓 1 開發板試用體驗】車牌識別

    。 硬件連接 連接 WiFi 實現無線網絡通信; 使用 Micro-USB 數據線實現設備供電; OpenCV 安裝 OpenCV 是一個開源的計算機視覺庫,廣泛應用于圖像處理、視頻
    發表于 01-02 20:53

    沒有專利的opencv-python 版本

    ) 視頻處理 視頻讀取/寫入、幀提取、運動檢測(背景差分) 繪圖功能 畫直線/矩形/圓、添加文字、標注關鍵點 關鍵總結: 對 Python 3.13 來說,最優選擇是安裝 opencv-python
    發表于 12-13 12:37

    那些年我用OpenCV+Qt趟過哪些坑?寫給視覺應用開發者的避坑指南

    前陣子,團隊里新來的小伙子跑來找我,眉頭緊鎖。他手里的項目我清楚:一個基于攝像頭的簡單計數工具。Demo階段用Python+OpenCV,幾行代碼跑得飛快,準確率也好看。可一旦要打包成給產線工人用
    發表于 12-02 09:43

    【創龍TL3562-MiniEVM開發板試用體驗】問題4 ubuntu鏡像,opencv不能正常工作??

    /simple --trusted-host mirrors.aliyun.com opencv-python 示例代碼 import cv2 # 初始化攝像頭對象,0通常是默認的攝像頭索引 #cap
    發表于 08-11 22:17

    【GM-3568JHF開發板免費體驗】OpenCV開發環境安裝和計數程序開發

    查看ip SSH鏈接 遠程登錄賬號和密碼是linaro 二、安裝Pip管理工具 Sudo apt-get install python3-pip 三、安裝cv2環境 cv2支持圖像處理(如濾波、邊緣
    發表于 08-09 13:30

    如何板端編譯OpenCV并搭建應用--基于瑞芯微米爾RK3576開發板

    INSTALL_PYTHON_EXAMPLES=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/home/myir/Downloads
    發表于 08-08 17:14

    飛騰主板上的芯片組X100能起到什么作用?

    飛騰主板上的芯片組X100作為飛騰處理器的重要配套芯片,在計算機系統中承擔著多元且關鍵的作用,主要體現在圖形圖像處理與接口擴展兩大核心功能領域。
    的頭像 發表于 07-28 09:25 ?671次閱讀

    國產化板卡設計資料:2270-VC709E 基于FMC接口的JFM7VX690T36 PCIeX8 接口卡

    JFM7K325T板卡, 國產化板卡, 軟件無線電處理平臺, 圖形圖像硬件加速器, JFM7VX690T板卡
    的頭像 發表于 07-17 09:25 ?504次閱讀
    國產化板卡設計資料:2270-VC709E 基于FMC接口的JFM7VX690T36 PCIeX8 接口卡

    【Milk-V Duo S 開發板免費體驗】SDK編譯、人臉檢測、OpenCV測試

    -mobile-test ./opencv-mobile-test 生成 200x200 尺寸的 out.jpg 圖像,即實現圖片壓縮。 該測試工程可結合物體識別模型,實現輸入圖像的尺寸調整,為之后的推理和
    發表于 07-11 13:48

    【正點原子STM32MP257開發板試用】2.USB攝像頭使用

    ) (usb-482f0000.usb-1.3): /dev/video7 /dev/video8 /dev/media2 最后一個(UVC Camera)就是設備,要記下是video多少,后期opencv-python需要
    發表于 06-16 19:16

    itop-3568開發板機器視覺opencv開發手冊-圖像繪制-畫線

    用 imshow()函數對畫線之后的圖像進行展示; 第 8 行使用了 waitKey()函數,持續顯示展示照片直到按鍵的按下。 保存退出之后,在終端界面中輸入以下命令進行 python 代碼的運行,運行結果
    發表于 06-04 10:38

    基于LockAI視覺識別模塊:C++使用圖像的統計信息

    圖像處理中,統計信息可以幫助我們了解圖像的特性,例如區域內的像素分布、顏色轉換以及特定區域的分析。本文將介紹基于LockAI視覺識別模塊如何提取興趣區域(ROI)、轉換顏色通道、計算均值和標準差
    發表于 05-08 10:31

    商湯科技推動擴展現實及虛擬數字人標準化進程

    近日,全國信息技術標準化技術委員會計算機圖形圖像處理及環境數據表示分技術委員會在杭州舉辦“移動設備增強現實國家標準宣貫會暨擴展現實(XR)及虛擬數字人工作組2025年第一次工作組全體會議”。
    的頭像 發表于 04-19 11:36 ?989次閱讀

    何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

    攝像頭)1、安裝python3-opencvaptinstallpython3-opencv(左右移動查看全部內容)2、查看攝像頭支持的格式與分辨率root@debi
    的頭像 發表于 04-15 11:51 ?809次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>OpenCV</b>的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

    快速部署!米爾全志T527開發板的OpenCV行人檢測方案指南

    sudo apt-get install libopencv-dev python3-opencv 2.在全志T527開發板?安裝pipsudo apt-get install python3-pip 二
    發表于 04-11 18:14