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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值

發(fā)布時間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. Numpy 相關知識

1.1 Ndarray 對象

在了解 OpenCV 的圖像對象之前我們先對 NumPy 的基礎知識做一回顧,方便我們后續(xù)更進一步理解圖像對象的一系列操作。

In [2]: a = np.array([[1,  2],  [3,4], [5, 6]])In [3]: a
Out[3]: 
array([[1, 2],[3, 4],[5, 6]])In [4]: a.shape
Out[4]: (3, 2)

這是一個 3 X 2 的矩陣。

In [5]: b = np.array([[[1,  2],  [3,4], [5, 6]]])In [6]: b
Out[6]: 
array([[[1, 2],[3, 4],[5, 6]]])In [7]: b.shape
Out[7]: (1, 3, 2)

這是一個 1 X 3 X 2 的矩陣。

In [8]: c = np.array([[[1,  2],  [3,4], [5, 6]], [[11,  22],  [33,44], [55, 66]]])In [9]: c
Out[9]: 
array([[[ 1,  2],[ 3,  4],[ 5,  6]],[[11, 22],[33, 44],[55, 66]]])In [10]: c.shape
Out[10]: (2, 3, 2)

這是一個 2 X 3 X 2 的矩陣。

1.2 數(shù)據(jù)類型

名稱描述
bool_布爾型數(shù)據(jù)類型(True 或者 False)
int_默認的整數(shù)類型(類似于 C 語言中的 long,int32 或 int64)
intc與 C 的 int 類型一樣,一般是 int32 或 int 64
intp用于索引的整數(shù)類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64)
int8字節(jié)(-128 to 127)
int16整數(shù)(-32768 to 32767)
int32整數(shù)(-2147483648 to 2147483647)
int64整數(shù)(-9223372036854775808 to 9223372036854775807)
uint8無符號整數(shù)(0 to 255)
uint16無符號整數(shù)(0 to 65535)
uint32無符號整數(shù)(0 to 4294967295)
uint64無符號整數(shù)(0 to 18446744073709551615)
float_float64 類型的簡寫
float16半精度浮點數(shù),包括:1 個符號位,5 個指數(shù)位,10 個尾數(shù)位

numpy 的數(shù)值類型實際上是 dtype 對象的實例,并對應唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
dtype 對象是使用以下語法構(gòu)造的:

numpy.dtype(object, align, copy)
  • object - 要轉(zhuǎn)換為的數(shù)據(jù)類型對象
  • align - 如果為 true,填充字段使其類似 C 的結(jié)構(gòu)體。
  • copy - 復制 dtype 對象 ,如果為 false,則是對內(nèi)置數(shù)據(jù)類型對象的引用
In [13]: dt = np.dtype(np.int32)In [14]: dt
Out[14]: dtype('int32')

2. 圖像對象創(chuàng)建與賦值

import cv2
import numpy as npimage_name = "img/003.jpg"
img = cv2.imread(image_name)
print "img is {}".format(img)
print "img is {}".format(len(img))			# img is 198
print "img is {}".format(len(img[0]))		# img is 198
print "img is {}".format(len(img[0][0]))	# img is 3
x1 = np.copy(img)
print x1.shape		# (198, 198, 3)x2 = img
img[50:100, 100:150, :] = 255
cv2.imshow("x2", x2)
cv2.waitKey(0)
cv2.destroyAllWindows()

其中 img[50:100, 100:150, :] = 255 表示將 從圖片最頂端 50 像素- 100 像素, 從圖片最左邊 100 像素- 150 像素的全部值設置成 255 也就是純白色。

輸出結(jié)果為:

img is [[[131 190 199][107 167 173][ 82 140 145]...[ 67 125  97][ 67 125  97][ 66 124  96]][[130 187 196][109 167 173][ 88 144 149]...[ 66 124  96][ 66 124  96][ 65 123  95]][[118 170 177][104 156 162][ 90 141 144]...[ 67 125 100][ 66 124  99][ 65 123  98]]...[[  6  73  36][  8  75  38][  9  73  38]...[ 44  58  30][ 45  59  31][ 46  60  32]][[  4  68  38][  7  71  41][ 10  71  43]...[ 41  55  27][ 42  56  28][ 44  58  30]][[  0  63  34][  5  69  40][  8  69  43]...[ 39  53  25][ 40  54  26][ 41  55  27]]]
img is 198
img is 198
img is 3
(198, 198, 3)

可以看到圖片在內(nèi)存中是以 NumPy 的多維矩陣形式保存的,它是一個 198 x 198 x 3 的多維矩陣,其中 198 x 198 表示像素, 3 表示通道數(shù),也就是每個像素點由多少個元素組成。

原圖和執(zhí)行之后的效果圖如下

x3 = np.zeros(img.shape, img.dtype)
cv2.imshow("x3", x3)
cv2.waitKey(0)
cv2.destroyAllWindows()

圖片效果顯示

x4 = np.zeros([200, 200], np.uint8)
cv2.imshow("x4", x4)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果顯示:


x5 = np.ones(shape=[512, 512, 3], dtype=np.uint8)
x5[:, :, 0] = 255
cv2.imshow("x5", x5)
cv2.waitKey(0)
cv2.destroyAllWindows()

總結(jié)

以上是生活随笔為你收集整理的Python+OpenCV 图像处理系列(8)—— Numpy 对象及图像对象创建与赋值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。