1.安裝
1.1 on Python
OpenCV 官方有Python27的支持(以pyd的形式)
還有非官方支持opencv-python ,opencv-contrib-python(有一些非開源的算法實現)
支持Python3和Python2
1.2 on C++
1.2.1 可以根據cmake構建項目
1.2.2完全手動構建項目
Windows(VS)安裝參考:http://blog.csdn.net/poem_qianmo/article/details/19809337
特別注意:需要在linker
中特別添加額外的lib庫名稱
2.圖片操作
2.1 opencv-python 圖像操作
import numpy as np
images:np.array
# 圖像剪切
new_image = images[h0:h1, w0:w1].copy()
#圖像平移、變化
offset_x = abs(out_width - splited_image.shape[1])/2
offset_y = abs(out_height - splited_image.shape[0])/2
#print(splited_image, splited_image.shape)
# 1 0, 0 1是固定值
TransMat = np.array([[1,0,offset_x],
[0,1,offset_y]])
#新的圖像的順序是高寬倒序,灰度圖255意味着白底
#這個函數用作將驗證碼字符移到固定大小的白板中央
new_image = cv2.warpAffine(splited_image, TransMat,
(out_height, out_width)[::-1],#reversed
borderValue=255)
#平移時會用到高斯內核去噪點,圖像模糊
這時可以用
def format_letter(im, out_height=32, out_width=32):
offset_x = int(abs(out_height - im.shape[0]) / 2)
offset_y = int(abs(out_width - im.shape[1]) / 2)
im_height, im_width = im.shape
out = np.ones((out_height, out_width)) * 255
out[offset_x: offset_x+im_height, offset_y: offset_y+im_width] = im
return out
#本來matlab可以直接操作矩陣,但是numpy雖然也可以(通過 numpy.insert),但總是返回新的矩陣,開銷太大,還不如直接複製
# 利用malplotlib畫圖
import matplotlib as plt
plt.ion()
# ...
plt.imshow(image)
plt.pause(2) #持續2s
#或者直接
plt.imshow(image)
#..
plt.show()#顯示所有的圖像,但需要手動關閉