中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎么實(shí)現(xiàn)OpenCV入門

本篇文章為大家展示了怎么實(shí)現(xiàn)OpenCV入門,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運(yùn)營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價(jià)值。

OpenCV

OpenCV是一個(gè)開源庫,最初由Intel開發(fā),它包含了支持計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)的便捷方法和函數(shù)。

我將全神貫注地學(xué)習(xí)如何讀取圖像,如何在Jupyter notebook中顯示圖像以及如何檢查和更改其某些屬性。

import cv2
import numpy as np
import matplotlib.pyplot as plt

讓我們從.imread開始加載圖片,然后我們可以使用.imshow在新窗口中顯示它。

image = cv2.imread('img.jpg')
cv2.imshow('Some title', image)

cv2.waitKey(0)
cv2.destroyAllWindows()

怎么實(shí)現(xiàn)OpenCV入門

waitkey和.destroyAllWindows方法對于在不崩潰的情況下運(yùn)行代碼至關(guān)重要。

第一個(gè)命令將告訴Jupyter繼續(xù)運(yùn)行該塊,直到按下某個(gè)鍵,第二個(gè)命令將在最后關(guān)閉窗口。

我們還可以嘗試使用Matplotlib.imshow顯示圖像;這樣,它將以內(nèi)聯(lián)方式顯示,而不是在新窗口中顯示。

image = cv2.imread('img.jpg')
plt.imshow(image)

怎么實(shí)現(xiàn)OpenCV入門

看起來很奇怪。顏色都弄亂了。

OpenCV將圖像加載為Numpy數(shù)組,并且它們具有三個(gè)維度:紅色,綠色和藍(lán)色。維度通常稱為通道,它們保存的值介于0到255之間,代表每個(gè)像素的顏色強(qiáng)度。

>>> print(type(image))
>>> print(image.shape)

<class 'numpy.ndarray'>
(776, 960, 3)

也就是說是RGB,對吧?

不是真的。這是BGR,這是同一件事,但順序不同。

Matplotlib使用RGB,這就是為什么我們的圖片看起來很奇怪。這不是問題,因?yàn)镺penCV有一些非常方便的方法來轉(zhuǎn)換顏色。

image = cv2.imread('img.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.imshow(image)

怎么實(shí)現(xiàn)OpenCV入門

太酷了,我們必須使用OpenCV閱讀和顯示圖像,并了解如何將GBR顏色轉(zhuǎn)換為RGB以與Matplolib內(nèi)聯(lián)顯示它們。

其他顏色格式可以使用OpenCV處理,例如HSV,CMYK等。

色彩

由于我們將重復(fù)很多次,因此我們創(chuàng)建一個(gè)使用Matplotlib進(jìn)行繪圖的方法。我們可以設(shè)置圖的大小并刪除軸以使其更好。

def show(img):
    fig, ax = plt.subplots(1, figsize=(12,8))
    ax.axis('off')   
    plt.imshow(img, cmap='Greys')

請注意,我還將.imshow中的顏色圖定義為“灰色”。當(dāng)我們繪制RGB圖像時(shí),該參數(shù)將被忽略,但是稍后在繪制數(shù)組的各個(gè)維度時(shí)將很有用?,F(xiàn)在,讓我們嘗試一下我們的方法。

image = cv2.imread('img2.jpeg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

show(image)

怎么實(shí)現(xiàn)OpenCV入門

現(xiàn)在讓我們嘗試將其轉(zhuǎn)換為灰度然后再轉(zhuǎn)換為RGB。

image = cv2.imread('img2.jpeg')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB)

show(image)

怎么實(shí)現(xiàn)OpenCV入門

我們可以使用.split獲取顏色的單個(gè)數(shù)組,然后將圖片與.merge組合在一起。這對于修改,檢查和過濾數(shù)組的單個(gè)維度非常實(shí)用。

例如,我們可以將數(shù)組乘以零以將其刪除;

img = cv2.imread('img2.jpeg')

B, G, R = cv2.split(img) 
img = cv2.merge([B*0, G, R*0])

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
show(img)

怎么實(shí)現(xiàn)OpenCV入門

我們可以增加或減少顏色的強(qiáng)度,或者構(gòu)建具有相同形狀的新的Numpy數(shù)組來替換它,或者你可以考慮使用任何其他方法。

img = cv2.merge([np.ones_like(B)*255, G, R])

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
show(img)

怎么實(shí)現(xiàn)OpenCV入門

同樣的分割和合并概念也適用于其他格式,如HSV和HSL。

img = cv2.imread('img2.jpeg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

H, S, V = cv2.split(img)
 
img = cv2.merge([np.ones_like(H)*30, S+10, V-20])

img = cv2.cvtColor(img, cv2.COLOR_HSV2RGB)
show(img)

怎么實(shí)現(xiàn)OpenCV入門

HSV:色調(diào)、飽和度和明度。

這種格式適用于色調(diào),因此很容易過濾顏色——這意味著,我們可以使用角度范圍,而不必計(jì)算紅色、綠色和藍(lán)色之間的組合范圍。

怎么實(shí)現(xiàn)OpenCV入門

我們可以用Numpy來定義HSV的上下邊界。應(yīng)用函數(shù).inRange過濾這些值,并創(chuàng)建一個(gè)掩碼。然后,我們可以使用.bitwise_and在飽和狀態(tài)下應(yīng)用這個(gè)掩碼,它會使邊界以外的一切都變成零。

換句話說:我們可以過濾一些顏色,然后將其余所有顏色設(shè)置為灰度。

# read img and convert to HSV
img = cv2.imread('img2.jpeg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# split dimensions
H, S, V = cv2.split(img)
# upper and lower boundaries
lower = np.array([80, 0, 0]) 
upper = np.array([120, 255, 255])
# build mask
mask = cv2.inRange(img, lower, upper)
# apply mask to saturation
S = cv2.bitwise_and(S, S, mask=mask)
# assemble image
img = cv2.merge([H, S, V])
# convert to RGB and display
img = cv2.cvtColor(img, cv2.COLOR_HSV2RGB)
show(img)

怎么實(shí)現(xiàn)OpenCV入門

分割圖像也可以讓我們更容易地檢查它的構(gòu)圖。

我們可以從RGB繪制顏色,從HSV繪制飽和度,或任何其他我們想要的通道。

img = cv2.imread('img2.jpeg')
B, G, R = cv2.split(img) 
show(B)

img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
H, S, V = cv2.split(img)
show(S)

怎么實(shí)現(xiàn)OpenCV入門

使用“灰色”色圖時(shí),值從白色(低)到黑色(高)。

通過查看第一張地圖,我們可以看出,地面上的藍(lán)色強(qiáng)度高于建筑物中的藍(lán)色強(qiáng)度,并且通過飽和度圖可以看出,滑板周圍的值高于圖像中其他部分的值。

上述內(nèi)容就是怎么實(shí)現(xiàn)OpenCV入門,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前標(biāo)題:怎么實(shí)現(xiàn)OpenCV入門
鏈接地址:http://www.rwnh.cn/article24/jispce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、用戶體驗(yàn)網(wǎng)站維護(hù)、建站公司、網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)

廣告

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

微信小程序開發(fā)
光泽县| 广德县| 米林县| 前郭尔| 无极县| 三台县| 资溪县| 榆树市| 德格县| 襄城县| 崇明县| 雅江县| 鹤峰县| 星座| 滦平县| 西盟| 方城县| 美姑县| 大冶市| 益阳市| 开平市| 封丘县| 田阳县| 商丘市| 伊川县| 乌苏市| 墨竹工卡县| 中阳县| 聂荣县| 叙永县| 邓州市| 长垣县| 元谋县| 辰溪县| 通河县| 盐城市| 蕉岭县| 米泉市| 徐汇区| 建阳市| 新化县|