<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
按照一定的比例將兩張圖片融合在一起
addWeighted()方法:
進行疊加的兩張圖片寬高應該相同
疊加之後的畫素偏移值如果填的話不要填太大,超過255會導致影象偏白
import cv2 import cv2 as cv img = cv.imread("img/lena.jpg") tony = cv.imread("img/tony.jpg", ) # 修改lena圖片的寬高 融合影象之前兩個圖片的寬高要保持一樣 height, width = img.shape[0:2] new_height = int(height * 1.5) new_width = int(width * 2) new_img = cv2.resize(img, (new_width, new_height)) # 進行疊加時的插值 dst = cv.addWeighted(new_img, 0.5, tony, 0.5, 0) cv.imshow("dst", dst) cv.waitKey(0) cv.destroyAllWindows()
一張彩色圖片通常是由BGR三個通道疊加而成
為了便於影象特徵識別,我們通常會將一張彩色圖片轉成灰度圖片來進行分析,當我們轉成灰色圖片之後,圖片中邊緣,輪廓特徵仍然是能夠清晰看到的,況且在這種情況下我們僅需要對單一通道進行分析,會簡化很多操作
1.前面說的可以讀取圖片時以灰度的方式讀取
import cv2 img = cv2.imread("img/lena.jpg", cv.IMREAD_GRAYSCALE)
2.BGR轉灰度圖
import cv2 img = cv2.imread("img/lena.jpg", cv.IMREAD_COLOR) # 將原圖的所有顏色轉成灰色 dstImg = cv2.cvtColor(img, cv.COLOR_BGR2GRAY) cv.imshow("dstImg", dstImg) cv.waitKey(0)
灰度圖中每一個畫素點都是0~255組成,如果一個畫素點為100,反轉之後就是255 - 100 = 155
import cv2 as cv img = cv.imread("img/lena.jpg", cv.IMREAD_COLOR) # 將原圖的所有顏色轉成灰色 dstImg = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 獲取高度和寬度 height, width = dstImg.shape[0:2] # 遍歷每一個畫素點 for row in range(height): for col in range(width): # 255 - 每一個畫素點 = 反轉後的顏色 dstImg[row, col] = 255 - dstImg[row, col] cv.imshow("dstImg", dstImg) cv.waitKey(0)
一樣的道理,彩色圖片有BGR三個顏色通道,每一個顏色都取反
255 - B = B1 255 - G = G1 255 - R = R1
import cv2 as cv img = cv.imread("img/lena.jpg", cv.IMREAD_COLOR) # 將原圖的所有顏色轉成灰色 dstImg = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 獲取高度和寬度 height, width = dstImg.shape[0:2] # 遍歷每一個畫素點 for row in range(height): for col in range(width): # 255 - 每一個畫素點 = 反轉後的顏色 dstImg[row, col] = 255 - dstImg[row, col] cv.imshow("dstImg", dstImg) cv.waitKey(0)
馬賽克指現行廣為使用的一種影象(視訊)處理手段,此手段將影像特定區域的色階細節劣化並造成色塊打亂的效果,因為這種模糊看上去有一個個的小格子組成,便形象的稱這種畫面為馬賽克。其目的通常是使之無法辨認。
import cv2 # 讀取圖片 cv2讀取出的圖片都是一個二維矩陣 img = cv2.imread('./img/lena.jpg', cv2.IMREAD_COLOR) # 切片 兩個點的座標可以擷取圖片 # x1:x2,y1:y2 擷取眼睛部分 img1 = img[180:250, 180:310] # 獲取到高度和寬度 height, width = img1.shape[0:2] # 遍歷每一個畫素點 for row in range(height): for col in range(width): # 如果正好為10的倍數的行並且是10的倍數的列 if row % 10 == 0 and col % 10 == 0: # 獲取到這個畫素點的bgr三原色 b, g, r = img1[row, col] # 遍歷這個畫素點旁邊的100個畫素點 都等於中間這個畫素點 for i in range(10): for j in range(10): img1[row + i, col + j] = b, g, r cv2.imshow('img', img) cv2.imwrite('msk_lena.jpg', img) cv2.waitKey()
毛玻璃效果和馬賽克效果相似,馬賽克是:比如4*4的畫素點內所有畫素點都與第一個畫素點顏色一樣,毛玻璃效果為遍歷每一個畫素點,在該畫素點附近隨機選取一個顏色值替換。
偏移量越大越模糊
import random import cv2 import numpy as np img = cv2.imread('./lena.jpg') height, width = img.shape[0:2] new_img = np.zeros_like(img, np.uint8) # 定義偏移量 offset = 6 # 遍歷每一個畫素點 for row in range(height): for col in range(width): # 定義不超過1的隨機值與offset相乘 index = int(random.random() * offset) # 獲取到隨機完的行號和列號 如果不超過總高度就使用隨機的行 如果超過就使用高度-1 random_row = row + index if row + index < height else height - 1 random_col = col + index if col + index < width else width - 1 # 賦值顏色 b, g, r = img[random_row, random_col] new_img[row, col] = b, g, r cv2.imshow('img', img) cv2.imshow('new_img', new_img) cv2.waitKey()
浮雕效果公式:new_gray = gray0-gray1+120
加120是為了增加灰度值
import cv2 import numpy as np img = cv2.imread('./lena.jpg') # 獲取高度寬度 height, width = img.shape[0:2] # 轉為灰度圖 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) new_img = np.zeros_like(gray_img, np.uint8) # 遍歷每一個畫素點 for row in range(height): # 因為要獲取相鄰的畫素點 防止下標越界提前遍歷的時候寬度-1 for col in range(width - 1): # 獲取畫素點的畫素值 gray0 = gray_img[row, col] # 獲取相鄰畫素點的畫素值 gray1 = gray_img[row, col + 1] # 使用浮雕效果的公式 new_gray = int(gray0) - int(gray1) + 120 # 判斷新的灰度值是否越界 if new_gray > 255: new_gray = 255 elif new_gray < 0: new_gray = 0 # 賦值 new_img[row, col] = new_gray cv2.imshow('img', img) cv2.imshow('new_img', new_img) cv2.waitKey()
到此這篇關於Python+OpenCV實現六種常用影象特效的文章就介紹到這了,更多相關Python OpenCV影象特效內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45