最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+OpenCV實(shí)現(xiàn)六種常用圖像特效

 更新時(shí)間:2022年05月14日 15:45:03   作者:B.Bz  
這篇文章主要為大家介紹了用Python和OpenCV實(shí)現(xiàn)的六種常見圖像特效:圖像融合、灰度處理、馬賽克效果、浮雕效果、毛玻璃效果和顏色反轉(zhuǎn),需要的可以參考一下

圖像融合

按照一定的比例將兩張圖片融合在一起

addWeighted()方法:

  • 參數(shù)1第一張圖片矩陣
  • 參數(shù)2第一張圖片矩陣的權(quán)重
  • 參數(shù)3第二張圖片矩陣
  • 參數(shù)4第二張圖片矩陣的權(quán)重
  • 融合之后的偏移量

進(jìn)行疊加的兩張圖片寬高應(yīng)該相同

疊加之后的像素偏移值如果填的話不要填太大,超過255會(huì)導(dǎo)致圖像偏白

import cv2
import cv2 as cv

img = cv.imread("img/lena.jpg")
tony = cv.imread("img/tony.jpg", )

# 修改lena圖片的寬高  融合圖像之前兩個(gè)圖片的寬高要保持一樣
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))

# 進(jìn)行疊加時(shí)的插值
dst = cv.addWeighted(new_img, 0.5, tony, 0.5, 0)
cv.imshow("dst", dst)

cv.waitKey(0)
cv.destroyAllWindows()

灰度處理

一張彩色圖片通常是由BGR三個(gè)通道疊加而成

為了便于圖像特征識(shí)別,我們通常會(huì)將一張彩色圖片轉(zhuǎn)成灰度圖片來進(jìn)行分析,當(dāng)我們轉(zhuǎn)成灰色圖片之后,圖片中邊緣,輪廓特征仍然是能夠清晰看到的,況且在這種情況下我們僅需要對(duì)單一通道進(jìn)行分析,會(huì)簡(jiǎn)化很多操作

1.前面說的可以讀取圖片時(shí)以灰度的方式讀取

import cv2
img = cv2.imread("img/lena.jpg", cv.IMREAD_GRAYSCALE)

2.BGR轉(zhuǎn)灰度圖

import cv2

img = cv2.imread("img/lena.jpg", cv.IMREAD_COLOR)
# 將原圖的所有顏色轉(zhuǎn)成灰色
dstImg = cv2.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow("dstImg", dstImg)
cv.waitKey(0)

顏色反轉(zhuǎn)

灰度反轉(zhuǎn)

灰度圖中每一個(gè)像素點(diǎn)都是0~255組成,如果一個(gè)像素點(diǎn)為100,反轉(zhuǎn)之后就是255 - 100 = 155

import cv2 as cv

img = cv.imread("img/lena.jpg", cv.IMREAD_COLOR)
# 將原圖的所有顏色轉(zhuǎn)成灰色
dstImg = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 獲取高度和寬度
height, width = dstImg.shape[0:2]
# 遍歷每一個(gè)像素點(diǎn)
for row in range(height):
    for col in range(width):
        # 255 - 每一個(gè)像素點(diǎn) = 反轉(zhuǎn)后的顏色
        dstImg[row, col] = 255 - dstImg[row, col]

cv.imshow("dstImg", dstImg)
cv.waitKey(0)

彩色反轉(zhuǎn)

一樣的道理,彩色圖片有BGR三個(gè)顏色通道,每一個(gè)顏色都取反

255 - B = B1 255 - G = G1 255 - R = R1

import cv2 as cv

img = cv.imread("img/lena.jpg", cv.IMREAD_COLOR)
# 將原圖的所有顏色轉(zhuǎn)成灰色
dstImg = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 獲取高度和寬度
height, width = dstImg.shape[0:2]
# 遍歷每一個(gè)像素點(diǎn)
for row in range(height):
    for col in range(width):
        # 255 - 每一個(gè)像素點(diǎn) = 反轉(zhuǎn)后的顏色
        dstImg[row, col] = 255 - dstImg[row, col]

cv.imshow("dstImg", dstImg)
cv.waitKey(0)

馬賽克效果

馬賽克指現(xiàn)行廣為使用的一種圖像(視頻)處理手段,此手段將影像特定區(qū)域的色階細(xì)節(jié)劣化并造成色塊打亂的效果,因?yàn)檫@種模糊看上去有一個(gè)個(gè)的小格子組成,便形象的稱這種畫面為馬賽克。其目的通常是使之無法辨認(rèn)。

import cv2

# 讀取圖片  cv2讀取出的圖片都是一個(gè)二維矩陣
img = cv2.imread('./img/lena.jpg', cv2.IMREAD_COLOR)
# 切片 兩個(gè)點(diǎn)的坐標(biāo)可以截取圖片
# x1:x2,y1:y2  截取眼睛部分
img1 = img[180:250, 180:310]
# 獲取到高度和寬度
height, width = img1.shape[0:2]
# 遍歷每一個(gè)像素點(diǎn)
for row in range(height):
    for col in range(width):
        # 如果正好為10的倍數(shù)的行并且是10的倍數(shù)的列
        if row % 10 == 0 and col % 10 == 0:
            # 獲取到這個(gè)像素點(diǎn)的bgr三原色
            b, g, r = img1[row, col]
            # 遍歷這個(gè)像素點(diǎn)旁邊的100個(gè)像素點(diǎn) 都等于中間這個(gè)像素點(diǎn)
            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的像素點(diǎn)內(nèi)所有像素點(diǎn)都與第一個(gè)像素點(diǎn)顏色一樣,毛玻璃效果為遍歷每一個(gè)像素點(diǎn),在該像素點(diǎn)附近隨機(jī)選取一個(gè)顏色值替換。

偏移量越大越模糊

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
# 遍歷每一個(gè)像素點(diǎn)
for row in range(height):
    for col in range(width):
        # 定義不超過1的隨機(jī)值與offset相乘
        index = int(random.random() * offset)
        # 獲取到隨機(jī)完的行號(hào)和列號(hào)   如果不超過總高度就使用隨機(jī)的行  如果超過就使用高度-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]
# 轉(zhuǎn)為灰度圖
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

new_img = np.zeros_like(gray_img, np.uint8)
# 遍歷每一個(gè)像素點(diǎn)
for row in range(height):
    # 因?yàn)橐@取相鄰的像素點(diǎn) 防止下標(biāo)越界提前遍歷的時(shí)候?qū)挾?1
    for col in range(width - 1):
        # 獲取像素點(diǎn)的像素值
        gray0 = gray_img[row, col]
        # 獲取相鄰像素點(diǎn)的像素值
        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()

到此這篇關(guān)于Python+OpenCV實(shí)現(xiàn)六種常用圖像特效的文章就介紹到這了,更多相關(guān)Python OpenCV圖像特效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn)

    PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn)

    Qt中實(shí)現(xiàn)樹形結(jié)構(gòu)可以使用QTreeWidget類,也可以使用QTreeView類,本文主要介紹了PyQt5 QTreeWidget 樹形結(jié)構(gòu)遞歸遍歷當(dāng)前所有節(jié)點(diǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python中的shape()詳解

    Python中的shape()詳解

    這篇文章主要介紹了Python中的shape()詳解,在debug深度學(xué)習(xí)相關(guān)代碼的時(shí)候,很容易出現(xiàn)shape()這樣形式的東西,用來告知輸出數(shù)據(jù)的形式,需要的朋友可以參考下
    2023-08-08
  • Python報(bào)錯(cuò):OSError:?[Errno?22]?Invalid?argument解決方案及應(yīng)用實(shí)例

    Python報(bào)錯(cuò):OSError:?[Errno?22]?Invalid?argument解決方案及應(yīng)用實(shí)例

    最近跑別人的項(xiàng)目遇到一個(gè)這樣的問題一開始以為是沒有用管理員的權(quán)限運(yùn)行,導(dǎo)致創(chuàng)建不了日志文件后來發(fā)現(xiàn)是和windows的命名規(guī)則沖突了,這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò):OSError:?[Errno?22]?Invalid?argument的解決方案及應(yīng)用實(shí)例,需要的朋友可以參考下
    2024-07-07
  • Python命令行解析器argparse詳解

    Python命令行解析器argparse詳解

    大家好,本篇文章主要講的是Python命令行解析器argparse詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python計(jì)數(shù)器collections.Counter用法詳解

    Python計(jì)數(shù)器collections.Counter用法詳解

    本文主要介紹了Python計(jì)數(shù)器collections.Counter用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python如何提取chm數(shù)據(jù)

    Python如何提取chm數(shù)據(jù)

    這篇文章主要介紹了Python如何提取chm數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記

    Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記

    這里我們簡(jiǎn)單整理一下Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記,包括try...except與assert等基本語句的用法講解:
    2016-07-07
  • matplotlib subplots 設(shè)置總圖的標(biāo)題方法

    matplotlib subplots 設(shè)置總圖的標(biāo)題方法

    今天小編就為大家分享一篇matplotlib subplots 設(shè)置總圖的標(biāo)題方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python實(shí)現(xiàn)人人網(wǎng)登錄示例分享

    python實(shí)現(xiàn)人人網(wǎng)登錄示例分享

    這篇文章主要介紹了python實(shí)現(xiàn)登錄人人網(wǎng)示例,大家參考使用吧
    2014-01-01
  • 如何徹底解決python?NameError:name?'__file__'?is?not?defined

    如何徹底解決python?NameError:name?'__file__'?is?not?

    這篇文章主要給大家介紹了關(guān)于如何徹底解決python?NameError:name?'__file__'?is?not?defined的相關(guān)資料,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02

最新評(píng)論

通道| 长垣县| 汽车| 合江县| 汾阳市| 通州市| 安仁县| 天柱县| 鄂伦春自治旗| 灵川县| 浏阳市| 荔波县| 镇巴县| 光山县| 罗江县| 蒙城县| 郴州市| 商南县| 拜泉县| 深水埗区| 宝鸡市| 莱州市| 集贤县| 辽中县| 余干县| 台前县| 象州县| 胶南市| 墨脱县| 云林县| 天柱县| 新邵县| 读书| 三河市| 镇平县| 江阴市| 华坪县| 化隆| 嘉黎县| 井冈山市| 凌源市|