优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python-OpenCV 1. 图像处理库OpenCV安装

nanyue 2024-09-11 05:19:46 技术文章 4 ℃

一、简介

Python包含丰富的图像处理工具包,例如:

  • PIL(Python Imaging Library Python),现在一般使用其分支Pillow
  • Matplotlib
  • OpenCV-Python :OpenCV(开源计算机视觉库)是计算机视觉应中最广泛的库之一。OpenCV-Python是OpenCV的PythonAPI封装。

数字图像

数字图像:将二维图像有限数字的数值像素表示。

每个像素点可有各自的颜色值,可用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))

输出结果:

loading test.jpg ...
正在处理中 (200L, 280L, 3L)
width:280
height:200

Tags:

最近发表
标签列表