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

opencv圖片處理常見操作方法總結

 更新時間:2026年01月09日 10:32:28   作者:一招定勝負  
這篇文章主要介紹了opencv圖片處理常見操作方法的相關資料,通過代碼示例,展示了如何對圖片進行這些操作,并解釋了圖片在計算機中以數(shù)組形式存儲的原理,需要的朋友可以參考下

今天學習opencv對圖片的常見處理操作,包括:圖片的打碼,組合,放縮,加法運算,加權運算,以及圖片的模糊處理(平滑處理)

1、圖片打碼

代碼:

import cv2
import numpy as np

# 圖片打碼
a = cv2.imread(r'img.png')
a[100:200,200:300] = np.random.randint(0,256,(100,100,3))#矩陣賦值必須是相同大小
cv2.imshow(  'masaike',a)

(100,100,3)表示生成100行100列三通道的三維數(shù)組。

運行結果:

2、圖片組合和縮放

代碼:

import cv2
a = cv2.imread('img_1.png')
b = cv2.imread('img.png')
b[20:100,20:100] = a[20:100,20:100]#注意:矩陣的大小必須要統(tǒng)一。
cv2.imshow(  'b',b)
cv2.imshow( 'a',a)
# 圖片縮放cv2.resize
# 用于調整圖像的大小。它有以下幾個參數(shù):
# src:要調整大小的輸入圖像,可以是numpy數(shù)組、PIL圖像或其他類型。
# dsize:輸出圖像的大小,可以是一個元組,例如(寬,高),或者使用整數(shù)標量來縮放原始圖像。如果dsize為None,則根據(jù)scalex和scaley
# fx:沿x軸的縮放系數(shù)。
# fy:沿y軸的縮放系數(shù)。
a = cv2.imread('img.png')
# a_new = cv2.resize(a,(600,200))  # 寬、高
a_new = cv2.resize(a,dsize=None,fx=1.5,fy=0.5)
cv2.imshow( 'a1',a)
cv2.imshow('a_new',a_new)
cv2.waitKey(0)
cv2.destroyAllWindows()

運行結果:

3、圖片運算

代碼:

import cv2
'''---------圖像運算---------'''
# 圖像加法運算
# 對于+號運算,當對圖像a,圖像b進行加法求和時,遵循以下規(guī)則:
# 當某位置像素相加得到的數(shù)值小于255時,該位置數(shù)值為兩圖像該位置像素相加之和
# 當某位置像素相加得到的數(shù)值大于255時,該位置數(shù)值將截斷結果并將其減去 256  例如:相加后是260,實際是260-256=4
a = cv2.imread('img.png')
b = cv2.imread('img_1.png')
c = a+10  #圖片
cv2.imshow( 'yuan',a)
cv2.imshow( 'a+10',c)
cv2.waitKey(0)

c = a[50:100,50:100]+b[50:100,50:100]
cv2.imshow(  'a+b',c)
cv2.waitKey(0)

# 對于cv2.add()運算,當對圖像a,圖像b進行加法求和時,遵循以下規(guī)則:
# 當某位置像素相加得到的數(shù)值小于255時,該位置數(shù)值為兩圖像該位置像素相加之和
# 當某位置像素相加得到的數(shù)值大于255時,該位置數(shù)值為255
a = cv2.imread('img.png')
b = cv2.imread('img_1.png')
b = cv2.resize(b,  (100,100))
a = cv2.resize(a, dsize= (100,100))
c = cv2.add(a,b)  #也可以使用使用
cv2.imshow( 'a add b',c)
cv2.waitKey(0)


# 圖像加權運算
# 就是在計算兩幅圖像的像素值之和時,將每幅圖像的權重考慮進來,可以用公式表示為dst=src1×α+src2×β+γ
a = cv2.imread('img.png')
b = cv2.imread('img_1.png')
b = cv2.resize(b, dsize= (400,400))
a = cv2.resize(a, dsize= (400,400))
#
c =cv2.addWeighted(a, 0.5,b,  0.5,  10)  # 10:圖像的亮度值(常數(shù)),將添加到加權和上
cv2.imshow( 'addWeighted',c)
cv2.waitKey(0)
cv2.destroyAllWindows()

運行結果:

4、平滑處理(模糊處理)

選取一個像素點,一附近的像素點代替,代替方式是使用濾波器,濾波器是一個卷積核,通過卷積核實現(xiàn)均值,中值等運算。

代碼:給加入噪聲的圖片進行平滑處理消除噪聲,我們看下集中處理方式的用法和效果:

'''---------圖像平滑處理---------'''
# 圖像平滑(smoothing)也稱為"模糊處理"(bluring)
# 通過消除圖像中的噪聲或細節(jié)來使圖像看起來更為模糊,從而實現(xiàn)平滑效果
# 可以用來壓制、弱化、消除圖像中的細節(jié)、突變和噪聲。
# 下面是常用的一些濾波器
#           均值濾波 -> blur函數(shù)
#           方框濾波 -> boxFilter函數(shù)
#           高斯濾波->GaussianBlur函數(shù)
#           中值濾波->medianBlur函數(shù)
# dst=cv2.blur(src,ksize,anchor,borderType)
#   dst是返回值
#   src是需要處理的圖像
#   ksize是濾波核(卷積核)的大小
#   anchor是錨點,默認值是(-1,-1)一般無需更改
#   borderType是邊界樣式,一般無需更改
# 一般情況下,使用dst=cv2.blur(src,ksize)即可

import cv2
import numpy as np

# 1個用法
def add_peppersalt_noise(image, n=10000):
    result = image.copy()
    h, w = image.shape[:2]  # 獲取圖片的高和寬
    for i in range(n):  # 生成n個椒鹽噪聲
        x = np.random.randint(0, h)
        y = np.random.randint(0, w)
        if np.random.randint(0, 2) == 0:
            result[x, y] = 0
        else:
            result[x,y] = 255
    return result

# ##
image = cv2.imread('img.png')
cv2.imshow('yuan',image)
cv2.waitKey(0)
noise = add_peppersalt_noise(image)
cv2.imshow('noise',noise)
cv2.waitKey(0)

# ## 1、均值濾波  blur
blur_1 = cv2.blur(noise, (3,3))  #卷積核為3,3  效果一般,清晰度一般
cv2.imshow('blur_1',blur_1)
cv2.waitKey(0)
blur_2 = cv2.blur(noise, (63,63))
cv2.imshow('blur_2',blur_2)
cv2.waitKey(0)

#### dst=cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)式中:
####     dst是返回值,表示進行方框濾波后得到的處理結果。
####     src 是需要處理的圖像,即原始圖像。
####     ddepth是處理結果圖像的圖像深度,一般使用-1表示與原始圖像使用相同的圖像深度。(可以理解為數(shù)據(jù)類型)
####     ksize 是濾波核的大小。濾波核大小是指在濾波處理過程中所選擇的鄰域圖像的高 度和寬度。
####     anchor 是錨點,(指對應哪個區(qū)域)
####     normalize 表示在濾波時是否進行歸一化。
####         1.當值為True時,歸一化,用鄰域像素值的和除以面積。 此時方框濾波與 均值濾波 效果相同。
####         2.當值為False時,不歸一化,直接使用鄰域像素值的和。和>255時使用255

boxFilter_1 = cv2.boxFilter(noise,-1, ksize=(3,3),normalize = True) # 2、方框濾波
cv2.imshow('boxFilter_1',boxFilter_1)
cv2.waitKey(0)
boxFilter_2 = cv2.boxFilter(noise,-1, ksize=(3,3),normalize = False)
cv2.imshow('boxFilter_2',boxFilter_2)
cv2.waitKey(0)

#### cv2.GaussianBlur(src, ksize[, sigmaX[, sigmaY[, dst]]])高斯濾波
#### 參數(shù)說明:
#### src:輸入圖像,通常是一個NumPy數(shù)組。
#### ksize:濾波器的大小,它是一個元組,表示在水平和垂直方向上的像素數(shù)量。例如,(5, 5)表示一個5x5的濾波器。
#### sigmaX和sigmaY:分別表示在X軸和Y軸方向上的標準差。這些值與濾波器大小相同。默認情況下,它們都等于0,這意味著沒有高斯模糊。
#### dst:輸出圖像,通常是一個NumPy數(shù)組。如果為None,則會創(chuàng)建一個新的數(shù)組來存儲結果。

GaussianB = cv2.GaussianBlur(noise, ksize=(3,3), sigmaX=1) #標準差為1,標準正太分布。 3、高斯濾波
cv2.imshow('GaussianBlur',GaussianB)
cv2.waitKey(0)

# cv2.medianBlur(src, ksize[, dst]])中值濾波
# 參數(shù)說明:
# src:輸入圖像。
# ksize:濾波器的大小,它是一個整數(shù),表示在水平和垂直方向上的像素數(shù)量。例如,5表示一個5x5的濾波器。
# dst:輸出圖像,通常是一個NumPy數(shù)組。如果為None,則會創(chuàng)建一個新的數(shù)組來存儲結果。

medianB = cv2.medianBlur(noise, ksize=3)  # 4、中值濾波
cv2.imshow('medianBlur',medianB)
cv2.waitKey(0)

cv2.destroyAllWindows()

運行結果:

以上就是今天給大家分享的圖片處理核心知識點:圖片在計算機中本質是以數(shù)組形式存儲的,其中彩色圖片對應 RGB 三通道的數(shù)組結構,灰度圖則是單通道數(shù)組。所以我們用 OpenCV 處理圖片,本質上就是對這些數(shù)組進行各類運算和操作。

總結

到此這篇關于opencv圖片處理常見操作方法的文章就介紹到這了,更多相關opencv圖片處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

漾濞| 涿州市| 垫江县| 罗甸县| 乐陵市| 江山市| 英德市| 洪湖市| 盐池县| 广平县| 阳信县| 扶绥县| 奈曼旗| 平遥县| 汉沽区| 图们市| 慈溪市| 巴彦淖尔市| 翼城县| 定州市| 同德县| 四会市| 乐昌市| 民县| 奉贤区| 喀喇沁旗| 肥东县| 清河县| 荃湾区| 理塘县| 交口县| 陆川县| 嘉义县| 通许县| 永宁县| 开远市| 光泽县| 甘德县| 阿鲁科尔沁旗| 苏尼特左旗| 工布江达县|