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

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)站建設
在线观看视频免费午夜| 日本色小姐美国青青草原| 九九热这里只有免费视频| 中文字幕乱码高清欧美日韩| 人妖激情一区二区三区| 日韩高清在线一区二区三区| 99热精品免费在线观看| 日韩精品a区二区在线电影| 亚洲伦理在线一区二区| 一级亚洲国产日韩欧美| 精品人妻一区二区四区| 免费不卡无码毛片观看| 日韩欧美亚洲综合另类| 另类激情综合在线观看| 日韩新片免费专区在线| 成人精品播放视频在线观看| 日韩欧美中文字幕综合网| 国产精品久久高清免费| 91麻豆精品国产久久久| 亚洲乱码一区二区三区人妇| 国产麻豆精品免费喷白浆视频网站| 日本亚洲中文字幕无吗| 免费国产成人高清在线视频| 国产成人在线免费短视频| 男人的天堂成人午夜视频| 久久亚洲中文字幕精品一区四区| 国产传媒视频在线免费观看| 99热这里只有精品网址| 国产三级国产精品国产专播| 国产亚洲精品热视频在线观看| 日韩欧美一区二区三区在线| 麻豆精品国产粉嫩av| 亚洲天堂毛片在线观看| 91超碰在线观看中文| 天堂久久天堂av色综合| 香蕉网性欧美在线视频| 一区二区三区日韩国产电影| 欧美在线观看日韩精品| 日韩国产精品亚洲欧美在线| 清纯唯美校园春色亚洲激情| 日韩精品一区二区三区欲色av|