1 修改並獲取畫素值
)2 獲取影象屬性
img.shape #影象形狀
img.size #畫素數目
img.dtype #影象的資料型別
3 影象roi
拷貝影象的某部分區域到另一部分
ball = img[
280:
340,
330:
390]
img[
273:
333,
100:
160]
= ball
拆分並合併影象通道
b, g, r = cv2.split(img)
#或者b=img[:,:,0]
img = cv2.merge(
[b, g, r]
)
為影象擴邊: cv2.copymakeborder()
使用 cv2.copymakeborder()函式。這經常在卷積運算或 0 填充時被用到。這個函式包括如下引數:
• src 輸入影象
• top, bottom, left, right 對應邊界的畫素數目。
• bordertype 要新增那種型別的邊界,型別如下
– cv2.border_constant 新增有顏色的常數值邊界,還需要
下乙個引數(value)。
– cv2.border_reflect 邊界元素的映象。比如: fedcba|abcdefgh|hgfedcb
– cv2.border_reflect_101 or cv2.border_default
跟上面一樣,但稍作改動。例如: gfedcb|abcdefgh|gfedcba
– cv2.border_replicate 重複最後乙個元素。例如: aaaaaa|
abcdefgh|hhhhhhh
– cv2.border_wrap 不知道怎麼說了, 就像這樣: cdefgh|
abcdefgh|abcdefg
• value 邊界顏色,如果邊界的型別是 cv2.border_constant
blue=
[255,0
,0]replicate = cv2.copymakeborder(img1,10,
10,10,
10,cv2.border_replicate)
reflect = cv2.copymakeborder(img1,10,
10,10,
10,cv2.border_reflect)
reflect101 = cv2.copymakeborder(img1,10,
10,10,
10,cv2.border_reflect_101)
wrap = cv2.copymakeborder(img1,10,
10,10,
10,cv2.border_wrap)
constant= cv2.copymakeborder(img1,10,
10,10,
10,cv2.border_constant,value=blue)
plt.subplot(
231)
,plt.imshow(img1,
'gray'
),plt.title(
'original'
)plt.subplot(
232)
,plt.imshow(replicate,
'gray'
),plt.title(
'replicate'
)plt.subplot(
233)
,plt.imshow(reflect,
'gray'
),plt.title(
'reflect'
)plt.subplot(
234)
,plt.imshow(reflect101,
'gray'
),plt.title(
'reflect_101'
)plt.subplot(
235)
,plt.imshow(wrap,
'gray'
),plt.title(
'wrap'
)plt.subplot(
236)
,plt.imshow(constant,
'gray'
),plt.title(
'constant'
)plt.show(
)
4 影象上的運算cv2.add(x,y)
影象加法
x = np.uint8(
[250])
y = np.uint8([10
])print
(cv2.add(x,y)
)#250+10 = 260 => 255
print
(x+y)
#250+10 = 260 % 256 = 4
**影象混合cv2.addweighted() **
不同的是兩幅影象的權重不同,這就會給人一種混合或者透明的感覺。影象混合的計算公式如下:g (x) = (1 − α) f0 (x) + αf1 (x)通過修改 α 的值(0 -1),可以實現非常酷的混合dst = α · img1 + β · img2 + γ。
dst = cv2.addweighted(img,
0.7, img1,
0.3,0)
im_show(
'dst'
, dst)
按位運算
按位操作有: and, or, not, xor 等。
, img)5 程式效能檢測及優化
• 檢測程式的效率
• 一些能夠提高程式效率的技巧
使用 opencv 檢測程式效率
cv2.gettickcount 函式返回從參考點到這個函式被執行的時鐘數。所
以當你在乙個函式執行前後都呼叫它的話,你就會得到這個函式的執行時間
(時鐘數)。
cv2.gettickfrequency 返回時鐘頻率,或者說每秒鐘的時鐘數。所以
你可以按照下面的方式得到乙個函式執行了多少秒:
e1 = cv2.gettickcount(
)# your code execution
e2 = cv2.gettickcount(
)time =
(e2 - e1)
/ cv2.gettickfrequency(
)
opencv 中的預設優化
使用函式 cv2.useoptimized()來檢視優化是否被開啟了,使用函式 cv2.setuseoptimized() 來開啟優化。
OpenCV 計算機視覺庫
opencv是乙個由因特爾公司支援的開源機器視覺庫,關於它的介紹,網上隨便一搜就車載斗量。這裡我不談視覺庫的主要內容,而是將這段時間來對它的使用心得作個簡單介紹,以啟發打算用這個庫的朋友的思路,與大家一起來分享。在學校的時候,雖然是影象處理研究方向,但真正具體的應用到影象的很多東西,還是在參加工作以...
計算機視覺 opencv人臉識別
import cv2 步驟1 載入影象 gray cv2.cvtcolor img cv2.color bgr2gray 將影象轉換成灰度模式 opencv載入影象的方式是bgr cv2.imshow test gray cv2.waitkey 0 為什麼不直接在載入影象的時候指定灰度影象?而是要轉...
計算機視覺OpenCV傅利葉變換
傅利葉變換的作用 高頻 變化劇烈的灰度分量。例如邊界。低頻 變化緩慢的灰度分量,例如大海。低通濾波器 只保留低頻,會使得影象模糊 高通濾波器 只保留高頻,會使得影象細節增強 cv2.dft img,cv2.dft complex output 進行傅利葉變化 引數說明 img表示輸入的,cv2.df...