OpenCV 中文版官方教程來了。
OpenCV是計算機視覺中經典的專用庫,然而其中文版官方教程久久不來。近日,一款最新OpenCV4.1 版本的完整中文版官方教程出爐,讀者朋友可以更好的學習了解OpenCV相關細節。教程來自objectdetection.cn。
最新Opencv-Python中文版官方文檔:
http://woshicver.com
一、簡介
Python包含豐富的圖像處理工具包,例如:
數字圖像
數字圖像:將二維圖像有限數字的數值像素表示。
每個像素點可有各自的顏色值,可用RGB或CMYK(青、品紅、黃、黑)色域。
分辨率是度量圖像內數據量多少的一個參數,通常表示成每英寸像素數和每英寸點數。
二、pip安裝OpenCV
1. windows環境(已安裝Python2.7)
安裝numpy
pip install -i https://pypi.douban.com/simple numpy
安裝 OpenCV-Python
到:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
下載opencv_python-2.4.13.2-cp27-cp27m-win_amd64.whl
運行
pip install opencv_python-2.4.13.2-cp27-cp27m-win_amd64.whl
2. CentOS 環境
pip install numpy pip install mlpy cd /opt git clone https://github.com/Itseez/opencv.git cd opencv/ git checkout tags/2.4.11 mkdir build cd build cmake -D WITH_FFMPEG=ON -D WITH_TBB=ON -D WITH_EIGEN=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make make install cd /usr/lib/python2.7/site-packages/ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so ln -s /usr/local/lib/python2.7/site-packages/cv.py cv.py
三、OpenCV的Python綁定實例
示例:加載并預覽一幅圖片。
import cv2 fn = "test.jpg" if __name__ == '__main__': print('loading %s ..' % fn) img = cv2.imread(fn) cv2.imshow('preview', img) cv2.waitKey() cv2.destroyAllWindows()
預覽結果:
隨機生成像素(使用Numpy庫)
# -*- coding:utf-8 -*- import cv2 import numpy as np if __name__ == '__main__': # 行數 sz1 = 200 # 列數 sz2 = 300 print(u'產生空圖像矩陣(%d*%d) ...' % (sz1,sz2)) img = np.zeros((sz1, sz2, 3), np.uint8) pos1 = np.random.randint(200, size=(2000, 1)) ### 行位置隨機數組 pos2 = np.random.randint(300, size=(2000, 1)) ### 列位置隨機數組 # 在隨機位置處設置像素點值 for i in range(2000): img[pos1[i],pos2[i],[0]] = np.random.randint(0,255) img[pos1[i],pos2[i],[1]] = np.random.randint(0,255) img[pos1[i],pos2[i],[2]] = np.random.randint(0,255) # 顯示圖像 cv2.imshow('preview', img) # 等待按鍵 cv2.waitKey() # 銷毀窗口 cv2.destroyAllWindows()
獲取圖像大小
# -*- coding:utf-8 -*- import cv2 import numpy as np fn = "test.jpg" if __name__ == '__main__': print('loading %s ...' % fn) print(u' 正在處理中 ') img = cv2.imread(fn) # 獲取圖像矩陣大小 sp = img.shape print(sp) # 高度 sz1 = sp[0] # 寬度 sz2 = sp[1] print('width:%d\nheight:%d' % (sz2,sz1))
輸出結果: