3種使用OpenCV進行圖像合成的技巧

準備好探索圖像世界的魔法了嗎?今天,我們將用Python和OpenCV庫,一起解鎖三種超炫的圖像合成技巧,讓你的照片變得與眾不同!🌈

1. 圖像融合:讓風景與夢境交織

想象一下,把日出的輝煌與夜空的星辰合二為一,是不是很酷?

首先,確保你的Python環境已經安裝了OpenCV。如果沒有,簡單一句命令就能搞定:

pip install opencv-python

接下來是魔法時間:

import cv2
import numpy as np# 加載圖片,想象一下,一張是白天,一張是夜晚
day = cv2.imread('day.jpg')
night = cv2.imread('night.jpg')# 確保兩張圖片尺寸相同,不然它們可沒法手拉手
if day.shape != night.shape:print("尺寸不匹配,請調整圖片尺寸!")
else:# 創建一個簡單的權重數組,用于控制融合效果alpha = 0.5  # 白天的權重beta = 0.5   # 夜晚的權重# 使用addWeighted函數,就像調色盤一樣混合顏色blended = cv2.addWeighted(day, alpha, night, beta, 0)# 顯示合成后的圖像,見證奇跡cv2.imshow('夢幻交融', blended)cv2.waitKey(0)  # 等待按鍵后關閉窗口cv2.imwrite('dreamy_sky.jpg', blended)  # 保存你的杰作

這段代碼的魔法在于addWeighted函數,它按指定權重合并兩個圖像,創造了一個既非完全白天也非完全夜晚的新景象,仿佛是夢境與現實的交匯。

2. 創意拼貼:打造個性化的照片墻

想不想讓你的照片變成藝術展覽的一部分?

讓我們動手吧,這次我們需要隨機挑選圖像區域進行拼貼:

import random# 假設我們有兩張圖片,準備進行拼貼
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')# 定義拼貼區域的大小
tile_size = (200, 200)# 獲取目標圖像的尺寸
height, width, _ = img1.shape# 初始化一個新的空白畫布
canvas = np.zeros((height, width, 3), dtype=np.uint8)# 隨機放置圖片塊
for i in range(height // tile_size[0]):for j in range(width // tile_size[1]):# 隨機選擇來自img1或img2的圖片塊source_img = random.choice([img1, img2])x = j * tile_size[1]y = i * tile_size[0]canvas[y:y+tile_size[0], x:x+tile_size[1]] = source_img[y:y+tile_size[0], x:x+tile_size[1]]cv2.imshow('創意拼貼', canvas)
cv2.waitKey(0)
cv2.imwrite('art_wall.jpg', canvas)

這里的關鍵是通過循環和隨機選擇,將原圖切割成小塊,然后隨機放置到一個新的畫布上,創造出獨一無二的拼貼效果。每一運行都是新的驚喜!

3. 夢幻鏡像:水中的倒影,宛如仙境pondscape

想要復制自然界的鏡像效應嗎?水面的倒影,輕而易舉就能實現。

讓我們用水的倒影來增添幾分神秘感:

def create_mirror_image(image, reflection_ratio=0.5):height, _, _ = image.shapemirror_height = int(height * reflection_ratio)# 上半部分保持不變upper_half = image[:height-mirror_height]# 下半部分翻轉作為倒影reflected_half = cv2.flip(image[-mirror_height:], 0)# 漸變融合,模擬水面的模糊效果for i in range(mirror_height):alpha = i / mirror_heightblended_row = cv2.addWeighted(upper_half[-i-1], 1-alpha, reflected_half[i], alpha, 0)upper_half[-i-1] = blended_rowreturn upper_halfimage = cv2.imread('lake.jpg')
mirrored_image = create_mirror_image(image)
cv2.imshow('湖畔仙境', mirrored_image)
cv2.waitKey(0)
cv2.imwrite('pondscape.jpg', mirrored_image)

這段代碼的亮點在于create_mirror_image函數。它首先確定倒影的高度,然后通過翻轉下半部分圖像創建倒影,接著使用漸變融合技術,模擬光線在水面上的折射效果,最終得到一幅如夢似幻的鏡像畫面。


好啦,今天的圖像合成之旅就到這里。是不是覺得OpenCV超級有趣又強大呢?試著用這些技巧去創造你自己的視覺故事吧,分享給朋友們,讓他們也驚嘆不已!

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

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

相關文章

【前端每日基礎】day33——響應式布局

響應式布局是一種網頁設計的方法,它可以使網站在不同的設備上(如桌面電腦、平板電腦、手機等)以及不同的屏幕尺寸上呈現出最佳的顯示效果。響應式布局的目標是使用戶在任何設備上都能夠方便地訪問和瀏覽網站,而不需要使用不同版本…

ios v品會 api-sign算法

vip品會 api-sign算法還原 ios入門案例 視頻系列 IOS逆向合集-前言嗶哩嗶哩bilibili 一、ios難度與安卓對比 這里直接復制 楊如畫大佬的文章的內容: ios難度與安卓對比 很多人說ios逆向比安卓簡單,有以下幾個原因 1 首先就是閉源,安卓開源…

PH編程入門:從基礎到實踐的全方位解析

PH編程入門:從基礎到實踐的全方位解析 PH編程,作為一種獨特而強大的編程語言,正逐漸在各個領域展現其巨大的潛力。對于初學者來說,如何快速入門并掌握PH編程的精髓,是一個既充滿挑戰又充滿機遇的過程。本文將從四個方…

vscode過濾器@modified(查看配置了哪些設置)

文檔 visualstudio?docs?getstarted?settingshttps://code.visualstudio.com/docs/getstarted/settings 說明 使用modified可以過濾出: 配置過的設置(和默認值不同); 在 settings.json 文件中配置了值的設置 步驟 1.打開…

Ubuntu Linux 24.04 使用certbot生成ssl證書

設置域名 1. 將需要生成SSL證書的域名解析到IP地址 idealand.xyz <> 64.176.82.190 檢查防火墻的設置 1. 首先查看防火墻的狀態&#xff1a; # ufw status 2. 如果防火墻開啟了&#xff0c;要開放80和443端口用于certbot驗證 # ufw allow 80 # ufw allow 443 生…

Vue3實戰筆記(53)—奇怪+1,VUE3實戰模擬股票大盤工作臺

文章目錄 前言一、實戰模擬股票大盤工作臺二、使用步驟總結 前言 實戰模擬股票大盤工作臺 一、實戰模擬股票大盤工作臺 接上文&#xff0c;這兩天封裝好的組件直接應用,上源碼&#xff1a; <template><div class"smart_house pb-5"><v-row ><…

JS對象由淺入深

對象 對象&#xff08;Object&#xff09;&#xff1a;JavaScript里的一種數據類型&#xff08;引用類型&#xff09;&#xff0c;也是用于存儲數據的 好處&#xff1a;可以用來詳細的描述某個事物&#xff0c;是用鍵值對形式存儲語義更明了 特點&#xff1a;對象數據是無序的&…

模型 FABE(特性 優勢 好處 證據)法則

說明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思維模型目錄。特性、優勢、好處、證據&#xff0c;一氣呵成。 1 FABE法則的應用 1.1 FABE法則營銷商用跑步機 一家高端健身器材公司的銷售代表正在向一家新開的健身房推銷他們的商用跑步機。以下…

數控切割編程:探索精密制造的奧秘與挑戰

數控切割編程&#xff1a;探索精密制造的奧秘與挑戰 在現代化制造領域&#xff0c;數控切割編程以其高精度、高效率的特性&#xff0c;成為眾多行業不可或缺的工藝手段。然而&#xff0c;對于初學者或外行人來說&#xff0c;數控切割編程往往顯得神秘且復雜。本文將從四個方面…

【數據分享】中國電力年鑒(2004-2022)

大家好&#xff01;今天我要向大家介紹一份重要的中國電力統計數據資源——《中國電力年鑒》。這份年鑒涵蓋了從2004年到2022年中國電力統計全面數據&#xff0c;并提供限時免費下載。&#xff08;無需分享朋友圈即可獲取&#xff09; 數據介紹 自1993年首次出版以來&#xf…

【數據結構】鏈表與順序表的比較

不同點&#xff1a; 順序表和鏈表是兩種常見的數據結構&#xff0c;他們的不同點在于存儲方式和插入、刪除操作、隨機訪問、cpu緩存利用率等方面。 一、存儲方式不同: 順序表&#xff1a; 順序表的存儲方式是順序存儲&#xff0c;在內存中申請一塊連續的空間&#xff0c;通…

解決OpenCV讀取目標圖像,cv2.imshow出現閃退的問題

前言 本文是該專欄的第17篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 最近有粉絲朋友詢問到OpenCV讀取目標圖像出現的一個問題,在基于python語言“使用OpenCV讀取目標圖像的時候,利用cv2.imshow函數出現閃退”的情況。 而本文,筆者將詳細介紹針對上述問題,…

【硬件工程師話家常】硬件工程師的項目時間管理

在整個項目研發團隊中&#xff0c;有兩個人和所有人打交道&#xff0c;一個就是項目經理&#xff0c;另一個就是硬件工程師。硬件工程師需要和各種研發人員打交道 、協調工作&#xff0c;這也要求硬件工程師具有豐富的知識面和強大的協調能力。 硬件工程師處于一個項目中的核心…

Java運算符及程序邏輯控制

&#x1f389;welcome to my blog 請留下你寶貴的足跡吧(點贊&#x1f44d;評論&#x1f4dd;收藏?&#xff09; &#x1f493;期待你的一鍵三連&#xff0c;你的鼓勵是我創作的動力之源&#x1f493; &#x1f423;目錄 &#x1f340;運算符&#x1f4da;1.算術運算符&#x…

centos7安裝jq報錯No package jq available

安裝EPEL倉庫 sudo yum install epel-release清理軟件倉緩存 sudo yum clean all重建軟件倉緩存 sudo yum makecache重新安裝jq yum install jq

python基礎知識點(藍橋杯python科目個人復習計劃67)

今日復習內容&#xff1a;做一下昨天的算法賽題目&#xff0c;試試基礎怎樣 小白挑戰賽一共6題&#xff0c;我只會5題&#xff0c;而且這5題是全對的&#xff0c;比起上次的兩題&#xff0c;已經有進步了。 第一題&#xff1a;六一獻禮 題目描述&#xff1a; 六月的陽光熱情…

python判斷文件是否存在

import os test_path "/Users/yxk/Desktop/test/GrayScale.tif" if(os.path.exists(test_path)):print(文件存在&#xff01;&#xff01;&#xff01;&#xff01;) else:print("文件不存在&#xff01;&#xff01;&#xff01;&#xff01;")結果如下 …

net前端怎么集成:探索集成之道

net前端怎么集成&#xff1a;探索集成之道 在軟件開發領域&#xff0c;前端集成是一個復雜而關鍵的環節。特別是在.NET框架中&#xff0c;前端集成的成功與否直接影響著應用程序的整體性能和用戶體驗。本文將深入剖析net前端集成的四個方面、五個方面、六個方面和七個方面&…

RabbitMQ(四)事務消息,惰性隊列,優先隊列

文章目錄 事務消息概念配置 惰性隊列概念應用場景 優先隊列概念配置 事務消息 僅在生產者端有效&#xff0c;消費端無效 概念 總結&#xff1a; 在生產者端使用事務消息和消費端沒有關系在生產者端使用事務消息僅僅是控制事務內的消息是否發送提交事務就把事務內所有消息都發送…

Python知識點13---面向對象的編程

提前說一點&#xff1a;如果你是專注于Python開發&#xff0c;那么本系列知識點只是帶你入個門再詳細的開發點就要去看其他資料了&#xff0c;而如果你和作者一樣只是操作其他技術的Python API那就足夠了。 Python是一個完全面向對象開發的語言&#xff0c;它的一切都以對象的…