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

Opencv基礎(chǔ)-創(chuàng)新互聯(lián)

視頻圖片操作

井陘ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

import cv2 as cv #導(dǎo)入opencv包

cv.imread(path,flags) #加載圖片,其中第一個(gè)參數(shù)是絕對(duì)或者相對(duì)路徑,第二個(gè)參數(shù)為0時(shí)加載灰度圖像,為1時(shí)加載彩圖像。

cv.imshow(path,flags) #顯示圖片,其中第一個(gè)參數(shù)是顯示窗口的名稱(chēng),第二個(gè)參數(shù)是打開(kāi)的圖片

cv.imwrite(name,flags)#保存圖片,第一個(gè)參數(shù)是途徑,第二個(gè)參數(shù)是要保存的圖片 返回boolean

cv2.namedWindow 創(chuàng)建一個(gè)窗體,只需指定窗體名稱(chēng)

cv2.namedWindow()初始化默認(rèn)標(biāo)簽是cv2.WINDOW_AUTOSIZE。

但是如果把標(biāo)簽改成cv2.WINDOW_NORMAL就可以自由的調(diào)整窗體大小,

當(dāng)圖像維度太大,這將很有幫助。

cv2.destroyWindow() 銷(xiāo)毀指定窗體

cv2.destroyAllWindows() 銷(xiāo)毀所有窗體

視頻

cap = cv.VideoCapture(0)打開(kāi)本地?cái)z像頭

cap = cv.VideoCapture(videoPath)讀取本地視頻

import cv2 as cv

cap = cv.VideoCapture(0)

while cap.isOpened():

status, frame = cap.read()

k = cv.waitKey(25)

# 圖片灰度化

frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

cv.imshow('video', frame)

cv.destroyWindow('video')

方法

cv.shape打印形狀

cv.size打印像素點(diǎn)個(gè)數(shù)

cv.ndim打印維度

cv.dtype打印數(shù)據(jù)類(lèi)型

cv.waitkey(0) 無(wú)限期的等待鍵盤(pán)按下

cv.destroyWindow(name)#銷(xiāo)毀所有窗體,參數(shù)是需要銷(xiāo)毀窗體的名稱(chēng)

cv.destroyAllWindows()#銷(xiāo)毀所有窗體

繪圖

圓:cv.circle(畫(huà)板,圓心,半徑,顏色,粗細(xì),cv.LINE_AA(抗鋸齒))

線條:cv.line(畫(huà)板,起點(diǎn),終點(diǎn),顏色,粗細(xì))

橢圓:cv.ellipse(畫(huà)板,圓心,(長(zhǎng)軸,短軸),逆時(shí)針旋轉(zhuǎn)的角度,橢圓弧沿順時(shí)針起始角度,結(jié)束角度,顏色,抗鋸齒)

多邊形:`使用函數(shù)cv2.polylines在一副圖像中繪制多邊形示例代碼

函數(shù)原型:polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

img:要繪制的那張圖像

pts:多邊形的頂點(diǎn)列表

isClosed:默認(rèn)為T(mén)rue表示閉合, False表示不閉合

繪制多邊形:

使用函數(shù)cv2.polylines在一副圖像中繪制多邊形示例代碼

函數(shù)原型:polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

img:要繪制的那張圖像

pts:多邊形的頂點(diǎn)列表

isClosed:默認(rèn)為T(mén)rue表示閉合, False表示不閉合

color:線段的顏色,傳一個(gè)元組,如紅色(0,0,255),如果是灰度圖請(qǐng)傳入灰度值

thickness:線段的粗細(xì),默認(rèn)值-1,表示填充

lineType:線段類(lèi)型:默認(rèn)8連線,cv2.LINE_AA表示抗鋸齒

more help:help(cv2.polylines)`

繪制矩形:

使用函數(shù)cv2.rectangle()在一副圖像中繪制矩形示例代碼

函數(shù)原型:rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img

img:要繪制的那張圖像

pt1:矩形的左上角坐標(biāo),如(0, 0)

pt2:矩形右下角坐標(biāo), 如(499, 499)

color:線段的顏色,傳一個(gè)元組,如紅色(0,0,255), 如果是灰度圖請(qǐng)傳入灰度值

thickness:線段的粗細(xì),默認(rèn)值-1,表示填充

lineType:線段類(lèi)型:默認(rèn)8連線,cv2.LINE_AA表示抗鋸齒

more help:help(cv2.rectangle)

繪制文字:

使用函數(shù)cv2.putText()在一副圖像中繪制文字

函數(shù)原型:putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> img

img:要繪制的那張圖像

text:要繪制的文本

org:繪制的位置坐標(biāo)

fontFace:字體格式

fontScale:字體大小

color:線段的顏色,傳一個(gè)元組,如紅色(0,0,255),如果是灰度圖請(qǐng)傳入灰度值

thickness:線段的粗細(xì),默認(rèn)值-1,表示填充

lineType:線段類(lèi)型:默認(rèn)8連線,cv2.LINE_AA表示抗鋸齒

bottomLeftOrigin 如果為T(mén)rue則圖像位于原點(diǎn)的左下角

more help:help(cv2.putText)

圖片操作

仿射變換:

matScale = np.float32([[0.5,0,0],[0,0.5,0]])

dst = cv.warpAffine(img,matScale,(width,height))

RGB通道拆分:b, g, r = cv.split(img)

RGB通道合并:img1 = cv.merge((B, g, r))

圖片縮放:cv.resize(原圖,(heigth,width))

圖片剪切:

img = cv.imread('cat.jpg',1)

dst = img[100:200,100:300] #起點(diǎn)(100,100)終點(diǎn)(200,200)

cv.imshow('dst',dst)

cv.waitKey(0)

圖片移位:

matShift = np.float32([[1,0,100],[0,1,200]])

dst = cv.warpAffine(img,matShift,(height,width))

cv.imshow('dst',dst)

圖片仿射變換:

matsrc = np.float32([[0,0],[0,height],[width,0]]) #原圖點(diǎn)位

matdst = np.float32([[50,50],[100,height-100],[width-100,50]]) #目標(biāo)點(diǎn)位

matAffine = cv.getAffineTransform(matsrc,matdst) #仿射變換

dst = cv.warpAffine(img,matAffine,(width,height))

圖片旋轉(zhuǎn):

matRotate = cv.getRotationMatrix2D((height*0.5,width*0.5),45,0.5)# 參數(shù)(中心點(diǎn),旋轉(zhuǎn)角度,縮放系數(shù))RotationMatrix2D旋轉(zhuǎn)矩陣方法

dst = cv.warpAffine(img,matRotate,(width,height))#放射變化

圖片特效

灰度處理:

#方法一:

img0 = cv.imread('cat.jpg',0) #灰度圖片

img1 = cv.imread('cat.jpg',1)#彩圖

#方法二:

img = cv.imread('cat.jpg',1)

dst = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

#方法三:

dst = np.zeros((height,width,3),np.uint8)

for i in range(0,height):

for j in range(0,width):

(b,g,r) = img[i,j]

gray = (int(b)+int(g)+int(r))/3

dst[i,j] = gray

print(np.uint(gray))

#方法四

dst = np.zeros((height,width,3),np.uint8)

for i in range(0,height):

for j in range(0,width):

(b,g,r) = img[i,j]

b = int(b)

g = int(g)

r = int(r)

gray = r*0.229+g*0.587+r*0.114

dst[i,j] = np.uint(gray)

圖片邊緣檢測(cè):

#1.灰度圖像處理

gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

#2.高斯濾波

imgG = cv.GaussianBlur(gray,(3,3),0)

#3.卷積

dst = cv.Canny(img,100,100)

繪圖

import numpy as np

import matplotlib.pyplot as plt

x = np.array([1,2,3,4,5,6,7,8])

y = np.array([3,5,7,6,2,6,10,15])

plt.plot(x,y,'r',lw = 10) #折線圖

plt.bar(x,y,0.5,alpha = 1,color = 'b') #原主圖

plt.show()

圖片腐蝕:

腐蝕操作:

原理:

如果卷積核對(duì)應(yīng)的原圖像的所有像素值都是1,那么中心像素點(diǎn)就保持原來(lái)的值,

否則變?yōu)?。所以前景物體會(huì)變小,整幅圖像的白色區(qū)域會(huì)減少。

erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

參數(shù)解析:鄭州人流醫(yī)院 http://www.zzzzyy120.com/

element:腐蝕操作的內(nèi)核。 如果不指定,默認(rèn)為一個(gè)簡(jiǎn)單的 3x3 矩陣。

否則,我們就要明確指定它的形狀,可以使用函數(shù)getStructuringElement()。

anchor:默認(rèn)為Point(-1,-1),內(nèi)核中心點(diǎn)。省略時(shí)為默認(rèn)值。

iterations:腐蝕次數(shù)。省略時(shí)為默認(rèn)值1。

borderType:推斷邊緣類(lèi)型,具體參見(jiàn)borderInterpolate函數(shù)。默認(rèn)為BORDER_DEFAULT,省略時(shí)為默認(rèn)值。

borderValue:邊緣值,具體可參見(jiàn)createMorphoogyFilter函數(shù)。可省略。

作用:

腐蝕對(duì)于去除白噪聲很有用,也可以用來(lái)斷開(kāi)兩個(gè)連接在一個(gè)的物體

代碼示例:

kernel = np.ones((5, 5), np.float32)

erosion = cv.erode(img, kernel, iterations=1)

膨脹操作:

膨脹操作:

原理:

與腐蝕相反,與卷積核對(duì)應(yīng)的原始圖像的像素值中只要有一個(gè)是1,

中心像素的值就是1,所以膨脹操作增加白色區(qū)域(前景)。

dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

參數(shù)解析:

anchor:默認(rèn)為Point(-1,-1),內(nèi)核中心點(diǎn)。省略時(shí)為默認(rèn)值。

iterations:膨脹次數(shù)。省略時(shí)為默認(rèn)值1。

borderType:推斷邊緣類(lèi)型,具體參見(jiàn)borderInterpolate函數(shù)。默認(rèn)為BORDER_DEFAULT,省略時(shí)為默認(rèn)值。

borderValue:邊緣值,具體可參見(jiàn)createMorphoogyFilter函數(shù)??墒÷?。

作用:

一般在去除圖像噪聲時(shí)可以先腐蝕然后在膨脹,

這樣噪聲就已經(jīng)被去除了,不會(huì)再回來(lái),但前景會(huì)增加。

膨脹也可以用連接兩個(gè)分開(kāi)的物體。

代碼示例:

kernel = np.ones((5, 5), np.float32)

dilate = cv.dilate(img, kernel, iterations=1)

簡(jiǎn)單閾值:

全局閾值:

def threshold_dem0(image):

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)

print("閾值",ret)

cv.imshow('binary',binary)

ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)

ret = 閾值,binary = 閾值圖像

參數(shù)(灰度圖像,閾值,255,閾值算法)

局部閾值:

def local_threshold(image):

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

binary = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,25,10)

cv.imshow('biary',binary)

binary = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,25,10)

自定義閾值:

def load_threshold(image):

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

h,w = gray.shape[:2]

men = np.reshape(gray,[1,w*h])

men1 = men.sum()/(w*h) #所有像素的均值

are,binary = cv.threshold(gray,men1,255,cv.THRESH_BINARY)

cv.imshow('biary',binary)

開(kāi)操作和閉操作:

開(kāi)運(yùn)算:先腐蝕后膨脹, 去除噪聲,去除白色小點(diǎn)、空洞

閉運(yùn)算:先膨脹后腐蝕, 用來(lái)填充前景物體的小黑點(diǎn)

形態(tài)學(xué)梯度:膨脹減去腐蝕, 可以得到前景物體的輪廓

禮帽:原圖減去開(kāi)運(yùn)算

黑帽:閉運(yùn)算減去原圖

使用函數(shù)morphologyEx()進(jìn)行形態(tài)學(xué)其他操作

函數(shù)原型為:morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

op參數(shù):

cv.MORPH_OPEN:開(kāi)運(yùn)算

cv.MORPH_CLOSE:閉運(yùn)算

cv.MORPH_GRADIENT:形態(tài)學(xué)梯度

cv.MORPH_TOPHAT:禮帽

cv.MORPH_BLACKHAT:黑帽

def open_dem0(image):# 開(kāi)操作

print(image.shape)

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV | cv.THRESH_OTSU)#閾值化

cv.imshow('binary',binary)

kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE,(3,3)#結(jié)構(gòu)元素

binarya = cv.morphologyEx(binary,cv.THRESH_TRUNC ,kernel) #形態(tài)學(xué)操作

cv.imshow('binary2',binarya)

def close_dem0(image):#閉操作

print(image.shape)

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)

ret,binay = cv.threshold(gray,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU) #閾值化

cv.imshow('binay',binay)

kernel = cv.getStructuringElement(cv.MORPH_RECT,(15,15)) #結(jié)構(gòu)元素

binay = cv.morphologyEx(binay,cv.MORPH_CLOSE,kernel) #形態(tài)學(xué)操作

cv.imshow('binay',binay)

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

新聞名稱(chēng):Opencv基礎(chǔ)-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.rwnh.cn/article4/csoooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、企業(yè)建站網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站排名做網(wǎng)站、微信小程序

廣告

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

小程序開(kāi)發(fā)
渑池县| 潞城市| 安化县| 青龙| 五家渠市| 巴中市| 滦南县| 克拉玛依市| 延川县| 乌鲁木齐县| 峨边| 景东| 湘西| 阿勒泰市| 马关县| 新巴尔虎左旗| 馆陶县| 信宜市| 密山市| 泰安市| 色达县| 略阳县| 定结县| 西和县| 乌兰察布市| 丹棱县| 莱州市| 封开县| 嘉定区| 五莲县| 景洪市| 榆中县| 息烽县| 札达县| 宁陕县| 拉孜县| 涞源县| 聂拉木县| 高要市| 梓潼县| 团风县|