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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyOpenCV 基本操作

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyOpenCV 基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

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

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

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

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

5. 生成指定大小的空圖像, ?生成指定大小的空圖像

6. 訪問和操作圖像像素

?

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

8. 抓取攝像頭


?

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

import cv2 # 生成圖片 img = cv2.imread(r'C:\Users\Desktop\test1.jpg') # 生成灰色圖片 imgGrey = cv2.imread("1.jpg", 0) #? 展示原圖 cv2.imshow("img", img) #? 展示灰色圖片 #cv2.imshow("imgGrey", imgGrey) #? 等待圖片的關閉 cv2.waitKey(0) # 保存灰色圖片 #cv2.imwrite("Copy.jpg", imgGrey)

?

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

? ? cv2.namedWindow(窗口名,屬性) 創建一個窗口,屬性—指定窗口大小模式:

? ? cv2.WINDOW_AUTOSIZE:根據圖像大小自動創建大小

? ? cv2.WINDOW_NORMAL:窗口大小可調整

? ? cv2.destoryAllWindows(窗口名) 刪除任何建立的窗口

?

import cv2# 生成圖片img = cv2.imread(r'C:\Users\Desktop\test1.jpg')cv2.namedWindow("img", cv2.WINDOW_NORMAL)cv2.imshow("img", img)cv2.waitKey()cv2.destroyAllWindows()

?

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

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

import cv2img = cv2.imread(r'C:\Users\Desktop\test1.jpg') imgGray = cv2.imread(r'C:\Users\Desktop\test1.jpg', 0)print('****img*****) print( img.shape) print('width: ', img.shape[0]) print('heigh: ', img.shape[1]) print('channel: ', img.shape[2])print('\n\n***imgGray**') print(imgGray.shape) print('width: ', imgGray.shape[0]) print('heigh: ', imgGray.shape[1]) print('channel: ', imgGray.shape[2])

?

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

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

import cv2img = cv2.imread(r'C:\Users\Desktop\test1.jpg')print('圖像類型: ', type(img)) print('圖像像素點數: ', img.size) print('圖像像素灰度值類型:', img.dtype)

?

5. 生成指定大小的空圖像, ?生成指定大小的空圖像

import cv2 import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg') imgZero = np.zeros(img.shape, np.uint8) imgFix = np.zeros((300, 500, 3), np.uint8)cv2.imshow("imgZero", imgZero) cv2.imshow("imgFix", imgFix) cv2.waitKey() ?

6. 訪問和操作圖像像素

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

import cv2 import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg')pixel_50_100 = img[50, 100] #返回3個值,分別是該像素點在BGR通道的值 print(pixel_50_100)img[50, 100] = (0, 0, 255)cv2.imshow("img", img) cv2.waitKey()

分開訪問圖像某一通道像素值也very方便

import cv2 import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.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()

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

import cv2 import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.jpg') img[0:50, 1:100] = (0, 0, 255)cv2.imshow("img", img) cv2.waitKey()

?

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

import cv2 import numpy as npimg = cv2.imread(r'C:\Users\Desktop\test1.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. 抓取攝像頭

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)breakcap.release() cv2.destroyAllWindows()

?

總結

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

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