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

歡迎訪問 生活随笔!

生活随笔

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

python

opencv python教程简书_OpenCV-Python系列二:常用的图像属性

發布時間:2023/12/20 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv python教程简书_OpenCV-Python系列二:常用的图像属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于圖像,我們經常需要知道關于圖像的特殊屬性,比如寬度,高度,面積,像素點數目等等,那么在opencv-python中,這些信息如何獲取呢?

本文結構:

1.基本圖像屬性

2. 對于opencv中的特殊數據類型

3. 圖像的矩

1. 圖像的基本屬性

圖像的寬度、高度

首先,opencv通過下面的方式獲取圖像內容

img = cv2.imread('bgrImage.jpg', -1)#-1-以圖像原格式,0-灰度格式,1-三通道格式, OpenCV使用的BGR三通道格式

opencv-python中使用cv2.imread()函數讀取圖像信息,數據類型為numpy.ndarray,不能通過img.cols, img.rows來獲取(C++版本cv::Mat的方式),通常會采用下面的方式獲取圖像的寬度,高度,通道數。

row, col, channel = img.shape #返回一個tuple(row, col, channel)

圖像的像素數目,數據類型

pixels = img.size

img_data_type = img.dtype#uint8等

對像素點的索引

px = img[10, 10]

print(px)# [ 84 188 155]

px = img[10, 10, 0]

print(px) # 84

我們可以通過上面的方式實現對圖像元素進行操作, 當你對處理速度有要求,可以使用img.item(row, col, channel)來獲取元素和使用img.itemset((row, col, channel), val)來修改元素。

2. 對于opencv中的特殊數據類型

這里主要參考著C++版本的OpenCV庫,比如cv::Point, cv::Rect, cv::Scalar, 此外還有一些如cv::Point3i, Vec4i等,在某些函數使用到時對應即可。在opencv-python中,使用numpy的數據格式進行處理,并不存在Point, Rect, Scalar這些特殊的概念,而是將其一般化了, 比如在繪制圓的時候:

cv2.circle(img, (x, y), radius, color, thickness) #opencv的官方教程速度還真比不上百度

對于圓心,直接使用一個tuple類型就行,不再有cv::Point這樣的特殊數據類型,這樣對于傳參的時候靈活了不少。

對于矩形cv::Rect,在python版本中繪制rectangle則無法使用傳遞(x, y, w, h)這樣的格式,只存有(x0, y0), (x1, y1)這樣傳遞左上和右下點信息來完成

cv2.rectangle(img, (x0, y0), (x1, y1), color, line_width)

對于外接矩形,直接通過x, y, w, h來獲取矩形的信息

x, y, w, h = cv2.boundingRect(contour)

對于cv::Scalar,也直接使用tuple來表示了,如:

img_mean = cv2.mean(img)# (127.549025, 127.6246, 127.67580000000001, 0.0)

返回一個長度為4的tuple,這對應C++的cv::Scalar.

3. 圖像的矩

對于圖像處理,我們的目的是提取圖像特征信息,不論是選取ROI(感興趣區域),還是濾波,邊緣提取等等,而且我們希望提取的特征受到噪聲,幾何形變,光線的影響越少越好,這樣的特征存在么?幸運的是,還真發現了這樣的特征--不變矩。

在OpenCV中,關于矩的使用常用在下面幾個地方:

計算輪廓的質心

# 常伴隨cv2.findContours()使用,cv2.moments第一個參數為點集

img_moments = cv2.moments(contour)

# 計算質心centroid坐標信息cent_x和cent_y

cent_x = int(img_moments['m10']/img_moments['00'])

cent_y = int(img_moments['m01']/img_moments['00'])

通過比較輪廓的矩來進行目標的匹配

對于opencv-python的基礎數據類型,有問題歡迎留言, Have Fun With OpenCV-Python, 下期見。

總結

以上是生活随笔為你收集整理的opencv python教程简书_OpenCV-Python系列二:常用的图像属性的全部內容,希望文章能夠幫你解決所遇到的問題。

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