欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

opencv與numpy圖像基本操作的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“opencv與numpy圖像基本操作的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“opencv與numpy圖像基本操作的示例分析”這篇文章吧。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)鷹手營子免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

1. 像素基本操作

1.1 讀取、修改像素

可以通過[行,列]坐標來訪問像素點數(shù)據(jù),對于多通道數(shù)據(jù),返回一個數(shù)組,包含所有通道的值,對于單通道數(shù)據(jù)(如gray),返回指定坐標的值,也可以通過 [行,列,通道index] 來訪問某坐標某通道的值。

>>> import cv2
>>> import numpy as np
>>> img = cv2.imread('messi5.jpg')
>>> px = img[100,100]
>>> print( px )
[157 166 200]
# accessing only blue pixel
>>> blue = img[100,100,0]
>>> print( blue )
157

可以直接通過坐標修改像素值

>>> img[100,100] = [255,255,255]
>>> print( img[100,100] )
[255 255 255]

然而直接像上面這樣去讀取、修改每個像素的值,效率是比較低的,可以使用下面的方法,效率是更高的

# accessing RED value
>>> img.item(10,10,2)
59
# modifying RED value
>>> img.itemset((10,10,2),100)
>>> img.item(10,10,2)
100

1.2 讀取圖像屬性

讀取圖像尺寸,返回一個元組 (行,列,通道數(shù))

>>> print( img.shape )
(342, 548, 3)

讀取像素大小, 行 通道數(shù)

>>> print( img.size )
562248

像素數(shù)據(jù)類型

>>> print( img.dtype )
uint8

1.3 圖像ROI操作

可以直接編輯像素區(qū)域,例如把圖像左下角50*50的像素復制到左上角

import cv2
import numpy as np
img = cv2.imread("test.jpg")
print(img.shape)
roiTest = img[475:525, 0:50]
img[0:50, 0:50] = roiTest
cv2.imshow("image",img)
cv2.waitKey(0)

opencv與numpy圖像基本操作的示例分析

1.4 分割、合并通道

有些情況下需要對圖像的某一通道數(shù)據(jù)進行操作,此時會用到分割、合并通道數(shù)據(jù)

>>> b,g,r = cv2.split(img)
>>> img = cv2.merge((b,g,r))

或者

b = img[:,:,0]

假設想編輯紅色通道的數(shù)據(jù),全部設置為0,不需要這樣分割后編輯, img[:,:,2] = 0 這樣即可。cv2.split操作是一個很耗時的操作,可以用numpy索引替代的操作,盡量用numpy索引來做。

1.4 生成圖像邊框

使用 cv2.copyMakeBorder 函數(shù)可添加圖像邊框,支持多種邊框算法

void cv::copyMakeBorder ( 
InputArray src, //原圖
//目標圖(cpp版本中,若傳入此數(shù)據(jù)且選BORDER_TRANSPARENT,則此數(shù)據(jù)被top/bottom/left/right切出來的roi部分不會被做任何修改,此圖像大小=dst.rows+top+bottom,dst.cols+left+right)
OutputArray dst, 
int top, //top/left/bottom/right 四個方向上的邊框像素
int bottom,
int left,
int right,
int borderType, //邊框類型見下圖
const Scalar & value = Scalar() //邊框類型為BORDER_CONSTANT時的邊框像素
)

opencv與numpy圖像基本操作的示例分析

BLUE = [255, 0, 0]
 img1 = cv2.imread("test.jpg")
 replicate = cv2.copyMakeBorder(img1, 100, 100, 100, 100, cv2.BORDER_REPLICATE)
 reflect = cv2.copyMakeBorder(img1, 100, 100, 100, 100, cv2.BORDER_REFLECT)
 reflect101 = cv2.copyMakeBorder(img1, 100, 100, 100, 100, cv2.BORDER_REFLECT_101)
 wrap = cv2.copyMakeBorder(img1, 100, 100, 100, 100, cv2.BORDER_WRAP)
 constant = cv2.copyMakeBorder(img1, 100, 100, 100, 100, cv2.BORDER_CONSTANT, value=BLUE)
 print(img1.shape, reflect.shape)
 plt.subplot(231), plt.imshow(img1, 'gray'), plt.title('ORIGINAL')
 plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE')
 plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT')
 plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101')
 plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')
 plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT')
 plt.show()

opencv與numpy圖像基本操作的示例分析 

上面的例子可以比較直觀的看到各種border的效果,同時也能發(fā)現(xiàn),python版的api與cpp版本的相比,默認初始化了一塊原始圖尺寸+各方向邊框尺寸的圖像內(nèi)存,作為內(nèi)置的dst參數(shù)。

輸出尺寸:(525, 700, 3) (725, 900, 3)

2. 圖像的基本算術(shù)操作

2.1 圖像相加

圖像相加,兩個圖像應該有相同的shape,或者圖像和一個標量相加,或者圖像和一個與其通道數(shù)相同的一維數(shù)組相加。

opencv的相加與numpy相加時,在超出數(shù)據(jù)類型范圍時的處理不同

>>> x = np.uint8([250])
>>> y = np.uint8([10])
>>> print( cv2.add(x,y) ) # 250+10 = 260 => 255
[[255]]
>>> print( x+y )  # 250+10 = 260 % 256 = 4
[4]

cpp版本的api還支持mask等參數(shù)

void cv::add ( 
InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray(),
int dtype = -1 
)

2.2 圖像混合

opencv通過 cv::addWeighted 函數(shù)提供了將兩個圖像混合在一起的方法

dst=α?img1+β?img2+γ

img1 = cv2.imread('ml.png')
img2 = cv2.imread('opencv-logo.png')
dst = cv2.addWeighted(img1,0.7,img2,0.3,0)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv與numpy圖像基本操作的示例分析

通過cv2.seamlessClone函數(shù)還能做更精細的圖像局部融合。

以上是“opencv與numpy圖像基本操作的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁標題:opencv與numpy圖像基本操作的示例分析-創(chuàng)新互聯(lián)
路徑分享:http://aaarwkj.com/article12/dgoogc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站導航、外貿(mào)網(wǎng)站建設、小程序開發(fā)、網(wǎng)站設計云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
亚洲精品午夜福利网| 亚洲熟女午夜毛片av毛片| 日韩最新视频一区二区三| 色在色在线播放亚洲中文| 91亚色在线免费观看| 日本在线有码中文视频| 岛国av不卡一二三区| 九九在线视频免费观看精彩| 九九视频免费观看5| 正在播放日韩黄色精品| 欧美欧美一区二区三区| 国产精品又大又黑又长又粗| 欧美亚洲精品在线观看| 91精品国产自产在线观看| 中国成熟女人毛茸茸视频| 色婷婷一区二区三区影片| 亚洲狠狠爱一区二区三区| 国产男女乱淫一区二区三区| 国产区av中文字幕在线观看| 欧美人妻不卡一区二区久久| 国产麻豆91在线视频| av二区不卡国产精品| 久久热这里只有精品网站| 午夜视频免费看一区二区| 午夜剧场福利在线观看| 国产精品果亚洲av无人区一区| 日韩成人三级一区二区| 国产成人av综合久久视色| 欧美激情另类综合国内| 日韩一区二区精品网站| 少妇高潮叫床免费网站在线观看 | 最新日韩av一区二区| 欧美成人免费做真爱高潮| 女同久久精品国产精品天堂99| 日本高清一区二区高清| 亚洲av日韩av高潮| 丝袜美腿美女日韩在线| 久久精品一区二区三区乱码| 高清不卡一区二区在线观看| 麻豆国产传媒69国产| 四虎在线免费视频播放|