欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年03月31日 14:47:40   作者:LightningMaster  
這篇文章主要介紹了python OpenCV的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python的opencv,感興趣的朋友可以了解下

圖像翻轉(zhuǎn)

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

pip install imutils

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

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

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

import cv2
import imutils

'''
imutils.rotate
第一個參數(shù)是翻轉(zhuǎn)的圖像,第二個參數(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 = False

while 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:
      break
vc.release()
cv2.destroyAllWindows()

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

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

圖像輪廓排序

這個效果同樣也是依靠imutils包完成。

from imutils import contours
import cv2
'''
contours.sort_contours
可選排序方式:"left-to-right", "right-to-left", "top-to-bottom", "bottom-to-top"
返回值為輪廓和外接矩形

contours.label_contour
contours包內(nèi)自帶的畫輪廓的函數(shù),可以直接用,然后可以在圖片上標(biāo)出輪廓序號
也可以直接使用cv2.drawContours直接畫輪廓
'''
img = cv2.imread(r"D:\opencv-workspace\Opencv\test17--VScode\shapes.png")
draw_img = img.copy()
img_rect = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.Canny(gray, 10, 20)  # Canny邊緣檢測
cnts, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 獲得輪廓
(cnts, boundingBoxes) = contours.sort_contours(cnts, "top-to-bottom")  # 對輪廓進(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等等。

圖像輪廓排序

這個效果同樣也是依靠imutils包完成。

from imutils import contours
import cv2
'''
contours.sort_contours
可選排序方式:"left-to-right", "right-to-left", "top-to-bottom", "bottom-to-top"
返回值為輪廓和外接矩形

contours.label_contour
contours包內(nèi)自帶的畫輪廓的函數(shù),可以直接用,然后可以在圖片上標(biāo)出輪廓序號
也可以直接使用cv2.drawContours直接畫輪廓
'''
img = cv2.imread(r"D:\opencv-workspace\Opencv\test17--VScode\shapes.png")
draw_img = img.copy()
img_rect = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.Canny(gray, 10, 20)  # Canny邊緣檢測
cnts, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 獲得輪廓
(cnts, boundingBoxes) = contours.sort_contours(cnts, "top-to-bottom")  # 對輪廓進(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()

顏色識別

基礎(chǔ)顏色識別

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

'''使用下面這個函數(shù)進(jìn)行轉(zhuǎn)換,第一個參數(shù)填寫要轉(zhuǎn)換的圖片,第二個參數(shù)填寫cv2.COLOR_BGR2HSV'''
cv2.cvtColor
import cv2
import numpy as np
'''
cv2.inRange
函數(shù)很簡單,參數(shù)有三個
第一個參數(shù):hsv指的是原圖
第二個參數(shù):lower_red指的是圖像中低于這個lower_red的值,圖像值變?yōu)?
第三個參數(shù):upper_red指的是圖像中高于這個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-workspace\Opencv\test16--VScode\photo.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)
# 使用下面這個函數(shù)能顯示原來的顏色。
res_green = cv2.bitwise_and(img, img, mask=mask_green)
cv2.imshow("img", res_green)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

根據(jù)BGR獲取HSV

import cv2

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

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

[[[ 93 61 193]]]

這個就是對應(yīng)的HSV的值。

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

閾值編輯器

import cv2
import numpy as np


def 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-workspace\Opencv\test16--VScode\test.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()

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

以上就是python OpenCV學(xué)習(xí)筆記的詳細(xì)內(nèi)容,更多關(guān)于python OpenCV的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作

    python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作

    這篇文章主要為大家介紹了python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python自動化完成tb喵幣任務(wù)的操作方法

    Python自動化完成tb喵幣任務(wù)的操作方法

    2019雙十一,tb推出了新的活動,商店喵幣,看了一下每天都有幾個任務(wù)來領(lǐng)取喵幣,從而升級店鋪賺錢,然而我既想賺紅包又不想干苦力,遂使用python來進(jìn)行手機自動化操作,需要的朋友跟隨小編一起看看吧
    2019-10-10
  • 利用LyScript實現(xiàn)應(yīng)用層鉤子掃描器

    利用LyScript實現(xiàn)應(yīng)用層鉤子掃描器

    Capstone 是一個輕量級的多平臺、多架構(gòu)的反匯編框架。本篇文章將運用LyScript插件結(jié)合Capstone反匯編引擎實現(xiàn)一個鉤子掃描器,感興趣的可以了解一下
    2022-08-08
  • python中cv2.projectPoints的用法小結(jié)

    python中cv2.projectPoints的用法小結(jié)

    這篇文章主要介紹了python中cv2.projectPoints的用法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • Django admin組件的使用

    Django admin組件的使用

    這篇文章主要介紹了Django admin組件的使用,幫助大家更好的理解和學(xué)習(xí)Django框架,感興趣的朋友可以了解下
    2020-10-10
  • Anaconda下配置python+opencv+contribx的實例講解

    Anaconda下配置python+opencv+contribx的實例講解

    今天小編就為大家分享一篇Anaconda下配置python+opencv+contribx的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Python中str字符串的內(nèi)置方法詳解

    Python中str字符串的內(nèi)置方法詳解

    這篇文章主要介紹了Python中str字符串的內(nèi)置方法詳解,在?python?中字符串有許多內(nèi)置的方法,在日常編程中會經(jīng)常使用到,熟練運用了能夠在很多場景大大的提高我們的工作效率,需要的朋友可以參考下
    2023-08-08
  • 攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)

    攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)

    這篇文章主要介紹了攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的,需要的朋友可以參考下
    2018-10-10
  • python浪漫表白源碼

    python浪漫表白源碼

    今天你表白了嗎? 這篇文章主要為大家分享了python浪漫表白源碼 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 實現(xiàn)?Python?腳本生成命令行

    實現(xiàn)?Python?腳本生成命令行

    這篇文章主要介紹了實現(xiàn)?Python?腳本生成命令行,文章通過定義一個?scrape?方法展開詳細(xì)內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05

最新評論