一 简介
opencv (open source computer vision library)是一个基于开源免费发行的跨平台计算机视觉库,可以运行在linux,window,Android,iOS等操作系统,轻量高效,由一系列的C函数和C++函数类构成,同时提供了python,ruby,matlab等接口,实现了图像处理和计算机视觉的诸多通用算法。由一些模块组成。
opencv中的build和source文件夹
build包括头文件include和x86和bin中的动态链接库dll,如果后面有d是debug版本,如果没有是release模块。
头文件和模块是有点类似的,引入头文件导入dll动态链接库。lib是静态链接库,和动态是一一对应的。
二 安装
1. 首先配置环境变量,就运行前自动加载dll,配置opencv2和opencv3的,D:opencv2opencvuildx86vc11in;D:opencvuildx86vc11in
2. 配置VS和opencv的环境依赖等
a.单次项目配置
项目——项目属性——配置属性
VC++目录——1>包含目录(D:opencvuildinclude;D:opencvuildincludeopencv;D:opencvuildincludeopencv2;$(IncludePath))——2>库目录(D:opencvuildx86vc11lib;$(LibraryPath))
链接器——输入——附加依赖项 注意是debug版本的dll
b.一次配置依赖
视图——属性管理器——
读入图像
cv2.imread()读入图像
第二个参数是要告诉函数应该如何读取这幅图片
-
cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略, 这是默认参数。
-
cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫 秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果 按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没 有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限 期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否 被按下,这个后面我们会接着讨论。
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果 你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删 除的窗口名。
tips:
在python里导入OpenCV包
import numpy as np
import cv2
读取并显示图像(bmp,jpg,png,tiff)
img=cv2.imread()
创建一个窗口
cv2.namedWindow("Image",cv2.WINDOW_NORMAL )
在窗口中显示图像
cv2.imshow("Image",img)
在窗口显示时
cv2.waitKey(0)
关闭所有窗口
cv2.destroyAllWindows()
复制图片,保存图片格式等相关问题
import cv2
import numpy as np
img=cv2.imread("/Users/guiyanan/Desktop/xjtlu.jpg")
#get new image
emptyImage = np.zeros(img.shape, np.uint8)
#copy get a new image
emptyImage2 = img.copy()
#change the color of image
emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#emptyImage3[...]=0 transmit black blank image
cv2.imshow("EmptyImage", emptyImage)
cv2.imshow("Image", img)
cv2.imshow("EmptyImage2", emptyImage2)
cv2.imshow("EmptyImage3", emptyImage3)
# for jpeg third is quality of image for png zip degree
cv2.imwrite("/Users/guiyanan/Desktop/xjtlu1.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY),5])
cv2.imwrite("/Users/guiyanan/Desktop/xjtlu2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
cv2.imwrite("/Users/guiyanan/Desktop/xjtlu3.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite("/Users/guiyanan/Desktop/xjtlu4.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
cv2.waitKey (0)
cv2.destroyAllWindows()