日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python-OpenCV基本操作cv2

發布時間:2024/9/21 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-OpenCV基本操作cv2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.圖片加載、顯示和保存

import cv2 # 生成圖片 img = cv2.imread("1.jpg") # 生成灰色圖片 imgGrey = cv2.imread("1.jpg", 0) # 展示原圖 cv2.imshow("img", img) # 展示灰色圖片 cv2.imshow("imgGrey", imgGrey) # 等待圖片的關閉 cv2.waitKey() # 保存灰色圖片 cv2.imwrite("Copy.jpg", imgGrey)

2.圖像顯示窗口創建與銷毀

cv2.namedWindow(窗口名,屬性) 創建一個窗口

屬性—指定窗口大小模式:?

cv2.WINDOW_AUTOSIZE:根據圖像大小自動創建大小
cv2.WINDOW_NORMAL:窗口大小可調整
cv2.destoryAllWindows(窗口名) 刪除任何建立的窗口

import cv2img = cv2.imread("1.jpg")cv2.namedWindow("img", cv2.WINDOW_NORMAL) cv2.imshow("img", img) cv2.waitKey() cv2.destroyAllWindows()

3.圖片寬、高、通道數獲取

img.shape 返回圖像高(圖像矩陣的行數)、寬(圖像矩陣的列數)和通道數3個屬性組成的元組,若圖像是非彩色圖,則只返回高和寬組成的元組。

import cv2img = cv2.imread("1.jpg") imgGrey = cv2.imread("1.jpg", 0)sp1 = img.shape sp2 = imgGrey.shapeprint(sp1) print(sp2) # ======輸出======= #(1200, 1920, 3) #(1200, 1920)

4.圖像像素數目和圖像數據類型的獲取

?圖像矩陣img的size屬性和dtype分別對應圖像的像素總數目和圖像數據類型。一般情況下,圖像的數據類型是uint8。

import cv2img = cv2.imread("1.jpg")imgSize = img.size print(imgSize)ty = img.dtype print(ty) #======輸出======== #6912000 #uint8

5 生成指定大小的空圖像

? ?生成指定大小的空圖像

import cv2 import numpy as npimg = cv2.imread("1.jpg") imgZero = np.zeros(img.shape, np.uint8)imgFix = np.zeros((300, 500, 3), np.uint8) # imgFix = np.zeros((300,500),np.uint8)cv2.imshow("img", img) cv2.imshow("imgZero", imgZero) cv2.imshow("imgFix", imgFix) cv2.waitKey()

6. 訪問和操作圖像像素

? ? OpenCV中圖像矩陣的順序是B、G、R。可以直接通過坐標位置訪問和操作圖像像素。

import cv2img = cv2.imread("01.jpg")numb = img[50,100] print numbimg[50,100] = (0,0,255) cv2.imshow("img",img) cv2.waitKey()

分開訪問圖像某一通道像素值也炒雞方便:

import cv2img = cv2.imread("01.jpg")img[0:100,100:200,0] = 255 img[100:200,200:300,1] = 255 img[200:300,300:400,2] = 255cv2.imshow("img",img) cv2.waitKey()

嗯,不得不說Python是一個很神奇的存在。

Python中,更改圖像某一矩形區域的像素值也很方便:

import cv2img = cv2.imread("01.jpg")img[0:50,1:100] = (0,0,255)cv2.imshow("img",img) cv2.waitKey()

7. 圖像三通道分離和合并

分離圖像通道可以使用cv2中的split函數,合并使用merge函數。

import cv2img = cv2.imread("01.jpg")b , g , r = cv2.split(img)# b = cv2.split(img)[0] # g = cv2.split(img)[1] # r = cv2.split(img)[2]merged = cv2.merge([b,g,r])cv2.imshow("Blue",b) cv2.imshow("Green",g) cv2.imshow("Red",r)cv2.imshow("Merged",merged) cv2.waitKey()

8. 在圖像上輸出文字

使用putText函數在圖片上輸出文字,函數原型:
putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

  • img: 圖像
  • text:要輸出的文本
  • org: 文字的起點坐標
  • fontFace: 字體
  • fontScale: 字體大小
  • color: 字體顏色
  • thickness: 字圖加粗

import cv2img = cv2.imread("01.jpg")cv2.putText(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))cv2.imshow("img",img) cv2.waitKey()

?

9. 圖像縮放

縮放使用cv2.resize()函數,resize函數里的size第一個是寬(列),第二個是高(行)。

import cv2img = cv2.imread("1.jpg") cv2.imshow("img", img)imgg = cv2.resize(img, (200, 100))cv2.imshow("imgg", imgg)cv2.waitKey()

10.圖片灰化處理

# from matplotlib import pyplot as plt # import cv2 # from pylab import * # # # 添加中文字體支持 # from matplotlib.font_manager import FontProperties # font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc",size = 14) # # # 載入圖像 # im = cv2.imread('1.jpg') # # 顯示原始圖像 # fig = plt.figure() # subplot(121) # plt.gray() # im2 = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) #OpenCV采用BGR排列順序,需要轉換一下. # imshow(im2) # title(u'彩色圖', fontproperties= font) # axis('off') # # 顯示灰度化圖像 # # 顏色空間轉換 # gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) # plt.subplot(122) # plt.gray() # imshow(gray) # title(u'灰度圖', fontproperties= font) # axis('off') # show()

?轉換后的結果

?

11.在python3 下使用OpenCV抓取攝像頭圖像提取藍色

?

import cv2 import numpy as npcap = cv2.VideoCapture(0) for i in range(0, 19):print(cap.get(i)) while(1):ret, frame = cap.read()hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)lower_blue = np.array([100, 47, 47])upper_blue = np.array([124, 255,255])mask = cv2.inRange(hsv, lower_blue, upper_blue) #藍色掩模res = cv2.bitwise_and(frame, frame, mask = mask)cv2.imshow(u"Capture", frame)cv2.imshow(u"mask", mask)cv2.imshow(u"res", res)key = cv2.waitKey(1)if key & 0xff == ord('q') or key == 27:print(frame.shape,ret)break cap.release() cv2.destroyAllWindows()

?

以下是從wangyblzu博客截下來的HSV顏色分量范圍

https://www.cnblogs.com/wangyblzu/p/5710715.html

?

三張結果圖

?

?

?

轉載地址:https://blog.csdn.net/dcrmg/article/details/78817660

總結

以上是生活随笔為你收集整理的Python-OpenCV基本操作cv2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。