国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python OpenCV學(xué)習(xí)筆記

瀏覽:103日期:2022-06-23 16:47:28
圖像翻轉(zhuǎn)

使用Python的一個(gè)包,imutils。使用下面的指令可以安裝。

pip install imutils

imutils包的Github地址:https://github.com/jrosebr1/imutils

CSDN鏡像:https://codechina.csdn.net/mirrors/jrosebr1/imutils

可以在上面這個(gè)地址里面學(xué)習(xí)更多的使用方式。

import cv2import imutils’’’imutils.rotate第一個(gè)參數(shù)是翻轉(zhuǎn)的圖像,第二個(gè)參數(shù)的翻轉(zhuǎn)角度函數(shù)還提供翻轉(zhuǎn)中心的設(shè)置,但默認(rèn)就是中心翻轉(zhuǎn)。’’’vc = cv2.VideoCapture(0)if vc.isOpened(): flag, frame = vc.read() img = imutils.rotate(frame, 180) # 圖像翻轉(zhuǎn) cv2.imshow('frame', img)else: flag = Falsewhile flag: flag, frame = vc.read() if frame is None: break if flag is True: img = imutils.rotate(frame, 180) # 圖像翻轉(zhuǎn) cv2.imshow('frame', img) if cv2.waitKey(10) == 27: breakvc.release()cv2.destroyAllWindows()

這樣寫的話,最后的輸出圖像就是翻轉(zhuǎn)180度的。

imutils包里還有其他好用的函數(shù),resizing、4-point Perspective Transform、Sorting Contours等等。

圖像輪廓排序

這個(gè)效果同樣也是依靠imutils包完成。

from imutils import contoursimport cv2’’’contours.sort_contours可選排序方式:'left-to-right', 'right-to-left', 'top-to-bottom', 'bottom-to-top'返回值為輪廓和外接矩形contours.label_contourcontours包內(nèi)自帶的畫輪廓的函數(shù),可以直接用,然后可以在圖片上標(biāo)出輪廓序號(hào)也可以直接使用cv2.drawContours直接畫輪廓’’’img = cv2.imread(r'D:opencv-workspaceOpencvtest17--VScodeshapes.png')draw_img = img.copy()img_rect = img.copy()gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img = cv2.Canny(gray, 10, 20) # Canny邊緣檢測(cè)cnts, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # 獲得輪廓(cnts, boundingBoxes) = contours.sort_contours(cnts, 'top-to-bottom') # 對(duì)輪廓進(jìn)行排序處理for (i, c) in enumerate(cnts): sortedImage = contours.label_contour(draw_img, c, i, color=(240, 0, 159))# img_out = cv2.drawContours(draw_img, cnts, -1, (240, 0, 159), 2)# 根據(jù)boundingBoxes畫外接矩形for (x, y, w, h) in boundingBoxes: img_rect = cv2.rectangle(img_rect, (x, y), (x+w, y+h), (240, 0, 159), 2)cv2.imshow('top-to-bottom', sortedImage)cv2.imshow('rect', img_rect)cv2.waitKey(0)cv2.destroyAllWindows()

這樣寫的話,最后的輸出圖像就是翻轉(zhuǎn)180度的。

imutils包里還有其他好用的函數(shù),resizing、4-point Perspective Transform、Sorting Contours等等。

圖像輪廓排序

這個(gè)效果同樣也是依靠imutils包完成。

from imutils import contoursimport cv2’’’contours.sort_contours可選排序方式:'left-to-right', 'right-to-left', 'top-to-bottom', 'bottom-to-top'返回值為輪廓和外接矩形contours.label_contourcontours包內(nèi)自帶的畫輪廓的函數(shù),可以直接用,然后可以在圖片上標(biāo)出輪廓序號(hào)也可以直接使用cv2.drawContours直接畫輪廓’’’img = cv2.imread(r'D:opencv-workspaceOpencvtest17--VScodeshapes.png')draw_img = img.copy()img_rect = img.copy()gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img = cv2.Canny(gray, 10, 20) # Canny邊緣檢測(cè)cnts, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # 獲得輪廓(cnts, boundingBoxes) = contours.sort_contours(cnts, 'top-to-bottom') # 對(duì)輪廓進(jìn)行排序處理for (i, c) in enumerate(cnts): sortedImage = contours.label_contour(draw_img, c, i, color=(240, 0, 159))# img_out = cv2.drawContours(draw_img, cnts, -1, (240, 0, 159), 2)# 根據(jù)boundingBoxes畫外接矩形for (x, y, w, h) in boundingBoxes: img_rect = cv2.rectangle(img_rect, (x, y), (x+w, y+h), (240, 0, 159), 2)cv2.imshow('top-to-bottom', sortedImage)cv2.imshow('rect', img_rect)cv2.waitKey(0)cv2.destroyAllWindows()

python OpenCV學(xué)習(xí)筆記

顏色識(shí)別基礎(chǔ)顏色識(shí)別

顏色識(shí)別是在HSV空間內(nèi)進(jìn)行的,因此在使用之前先進(jìn)行顏色空間的轉(zhuǎn)換。

’’’使用下面這個(gè)函數(shù)進(jìn)行轉(zhuǎn)換,第一個(gè)參數(shù)填寫要轉(zhuǎn)換的圖片,第二個(gè)參數(shù)填寫cv2.COLOR_BGR2HSV’’’cv2.cvtColor

import cv2import numpy as np’’’cv2.inRange函數(shù)很簡(jiǎn)單,參數(shù)有三個(gè)第一個(gè)參數(shù):hsv指的是原圖第二個(gè)參數(shù):lower_red指的是圖像中低于這個(gè)lower_red的值,圖像值變?yōu)?第三個(gè)參數(shù):upper_red指的是圖像中高于這個(gè)upper_red的值,圖像值變?yōu)?而在lower_red~upper_red之間的值變成255’’’# 閾值lower_green = np.array([50, 255, 255])upper_green = np.array([70, 255, 255])img = cv2.imread(r'D:opencv-workspaceOpencvtest16--VScodephoto.jpg')img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)mask_green = cv2.inRange(img_hsv, lower_green, upper_green)cv2.imshow('img_or', mask_green)# 使用下面這個(gè)函數(shù)能顯示原來(lái)的顏色。res_green = cv2.bitwise_and(img, img, mask=mask_green)cv2.imshow('img', res_green)cv2.waitKey(0)cv2.destroyAllWindows()

python OpenCV學(xué)習(xí)筆記

python OpenCV學(xué)習(xí)筆記

python OpenCV學(xué)習(xí)筆記

在進(jìn)行顏色識(shí)別時(shí),難免會(huì)出現(xiàn)“漏顏色”的現(xiàn)象,也就是會(huì)出現(xiàn)沒(méi)識(shí)別全的現(xiàn)象。這個(gè)時(shí)候可以再對(duì)圖像進(jìn)行處理,比如說(shuō)進(jìn)行形態(tài)學(xué)處理,讓圖像更加飽滿之類的。

根據(jù)BGR獲取HSV

import cv2color = np.uint8([[[193, 189, 147]]]) # 參數(shù)填寫B(tài)GR的值hsv = cv2.cvtColor(color, cv2.COLOR_BGR2HSV)print(hsv) # 打印出來(lái)的數(shù)值就是對(duì)應(yīng)的HSV值

程序運(yùn)行的結(jié)果是

[[[ 93 61 193]]]

這個(gè)就是對(duì)應(yīng)的HSV的值。

根據(jù)之前寫的顏色識(shí)別,就需要把對(duì)應(yīng)的閾值寫出。具體寫法就是保持S和V不變,H加減10。這樣的話就可以寫出高低閾值然后應(yīng)用到顏色識(shí)別里面就可以了。

閾值編輯器

import cv2import numpy as npdef function(x): lowH = cv2.getTrackbarPos('lowH', 'img_666') lowS = cv2.getTrackbarPos('lowS', 'img_666') lowV = cv2.getTrackbarPos('lowV', 'img_666') HighH = cv2.getTrackbarPos('HighH', 'img_666') HighS = cv2.getTrackbarPos('HighS', 'img_666') HighV = cv2.getTrackbarPos('HighV', 'img_666') # print(lowH, lowS, lowV, HighH, HighS, HighV) lower = np.uint8([lowH, lowS, lowV]) upper = np.uint8([HighH, HighS, HighV]) mask = cv2.inRange(img_hsv, lower, upper) res = cv2.bitwise_and(img, img, mask=mask) cv2.imshow('img', res)img = cv2.imread(r'D:opencv-workspaceOpencvtest16--VScodetest.jpg')img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)cv2.namedWindow('img_666')cv2.createTrackbar('lowH', 'img_666', 0, 179, function)cv2.createTrackbar('lowS', 'img_666', 0, 255, function)cv2.createTrackbar('lowV', 'img_666', 0, 255, function)cv2.createTrackbar('HighH', 'img_666', 0, 179, function)cv2.createTrackbar('HighS', 'img_666', 0, 255, function)cv2.createTrackbar('HighV', 'img_666', 0, 255, function)cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()

寫了一個(gè)比較垃圾的閾值編輯器。。。就不多解釋了。。

python OpenCV學(xué)習(xí)筆記

以上就是python OpenCV學(xué)習(xí)筆記的詳細(xì)內(nèi)容,更多關(guān)于python OpenCV的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产成人在人网站天堂 | 一级网站片 | 国产成人手机视频 | 国产片91| 中国a级淫片免费播放 | 日韩三级一区 | 色综合久久88色综合天天 | 免费一级欧美大片视频在线 | 欧美在线一级精品 | 欧美日韩一区二区三 | 午夜天堂视频 | 欧美另类性视频在线看 | 日本一线一区二区三区免费视频 | 亚洲综合黄色 | 久草免费新视频 | 日本无卡码免费一区二区三区 | 亚洲精品一 | 国产精品三 | 精品视频一区二区三区四区 | 国产午夜精品久久理论片 | 99视频精品在线 | 依人久久 | 欧美日韩一区二区视频图片 | 日本阿v视频在线观看高清 日本波多野结衣视频 | 久久黄色一级视频 | 69国产成人综合久久精品91 | 91玖玖| 男人天堂网2022 | 日韩免费一区二区三区在线 | 成人精品 | 波多野结衣一级 | 97视频在线播放 | 国产精选91热在线观看 | 国产91精品露脸国语对白 | 成人免费大片a毛片 | 国产真真人女人特级毛片 | 午夜在线伦理福利视频 | 三级黄色免费看 | 成人欧美一区二区三区视频 | 黄色在线播放 | 欧美在线播放成人免费 |