中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現OpenCV入門

發布時間:2021-12-15 18:03:26 來源:億速云 閱讀:168 作者:柒染 欄目:大數據

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

OpenCV

OpenCV是一個開源庫,最初由Intel開發,它包含了支持計算機視覺和機器學習的便捷方法和函數。

我將全神貫注地學習如何讀取圖像,如何在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()

怎么實現OpenCV入門

waitkey和.destroyAllWindows方法對于在不崩潰的情況下運行代碼至關重要。

第一個命令將告訴Jupyter繼續運行該塊,直到按下某個鍵,第二個命令將在最后關閉窗口。

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

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

怎么實現OpenCV入門

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

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

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

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

也就是說是RGB,對吧?

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

Matplotlib使用RGB,這就是為什么我們的圖片看起來很奇怪。這不是問題,因為OpenCV有一些非常方便的方法來轉換顏色。

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

plt.imshow(image)

怎么實現OpenCV入門

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

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

色彩

由于我們將重復很多次,因此我們創建一個使用Matplotlib進行繪圖的方法。我們可以設置圖的大小并刪除軸以使其更好。

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

請注意,我還將.imshow中的顏色圖定義為“灰色”。當我們繪制RGB圖像時,該參數將被忽略,但是稍后在繪制數組的各個維度時將很有用。現在,讓我們嘗試一下我們的方法。

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

show(image)

怎么實現OpenCV入門

現在讓我們嘗試將其轉換為灰度然后再轉換為RGB。

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

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

show(image)

怎么實現OpenCV入門

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

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

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)

怎么實現OpenCV入門

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

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

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

怎么實現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)

怎么實現OpenCV入門

HSV:色調、飽和度和明度。

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

怎么實現OpenCV入門

我們可以用Numpy來定義HSV的上下邊界。應用函數.inRange過濾這些值,并創建一個掩碼。然后,我們可以使用.bitwise_and在飽和狀態下應用這個掩碼,它會使邊界以外的一切都變成零。

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

# 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)

怎么實現OpenCV入門

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

我們可以從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)

怎么實現OpenCV入門

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

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

上述內容就是怎么實現OpenCV入門,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

古交市| 政和县| 万盛区| 若羌县| 呼玛县| 微博| 鲁甸县| 连江县| 奇台县| 阳高县| 广安市| 南宁市| 石台县| 青田县| 新建县| 临颍县| 鄢陵县| 民县| 莲花县| 富阳市| 涿州市| 长白| 乐昌市| 宜章县| 宝清县| 祥云县| 金门县| 大理市| 黑河市| 乐至县| 吉水县| 靖边县| 长宁区| 南阳市| 大埔区| 周宁县| 元谋县| 晋州市| 阳春市| 马公市| 临猗县|