内容简介:本文简单地介绍计算机图形处理的一些基本概念,以及一些有趣的例子和对应的Open CV的代码操作。顺便说一句,恭喜IG夺冠!图片由三维矩阵叠加而成([0,255]),通俗讲就是将三个分别只有R(red),G(green),B(blue)的矩阵叠加。
本文简单地介绍计算机图形处理的一些基本概念,以及一些有趣的例子和对应的Open CV的代码操作。
顺便说一句,恭喜IG夺冠!
一、图片存储原理
1、颜色空间RGB
(1)RGB三通道彩色图
图片由三维矩阵叠加而成([0,255]),通俗讲就是将三个分别只有R(red),G(green),B(blue)的矩阵叠加。
2、图像处理
(1)卷积/滤波
二、OpenCV基础
Open CV是一个开源的计算机视觉库,采用C/C++编写,提供 Python 、MATLAB以及其他语言的接口。
1、基本I/O操作
#-*- coding: utf-8 -*- import cv2 # 打开图片 img = cv2.imread('lion.jpg') # 显示图片 img = cv2.imshow('lion','lion.jpg') # 保存图片 cv2.imwrite('lion2.jpg',img) 复制代码
2、灰度、二值化处理
灰度化:在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色。
二值化:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,整个图像呈现出明显的只有黑和白的视觉效果
#-*- coding: utf-8 -*- import cv2 # 读取图片 img = cv2.imread('wsc.jpeg') # 灰度化处理、保存处理后文件 img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imwrite('wsc-gray.jpg',img) # 二值化处理、保存处理后文件 cv2.threshold(image, 550, 550, 0, image) cv2.imwrite('wsc-two-value.jpg',img) 复制代码
图片处理前 | 灰度处理 |
---|---|
图片处理前 | 二值处理 |
3、图片匹配
matchTemplate
用于在图像中与模板图片比对,查找目标
cv2.matchTemplate(img,template,eval('cv2.TM_CCOEFF')) 复制代码
关键参数
-
TM_SQDIFF
平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。 -
TM_CCORR
相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。 -
TM_CCOEFF
相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。 -
TM_SQDIFF_NORMED
归一化平方差匹配法 -
TM_CCORR_NORMED
归一化相关匹配法 -
TM_CCOEFF_NORMED
归一化相关系数匹配法
三、有趣的例子
1、边缘检测
Canny边缘检测
代码
#-*- coding: utf-8 -*- import cv2 # 读取图片 img = cv2.imread('wsc.jpeg') # Canny边缘检测处理,并写入图片 cv2.imwrite('wsc1.jpeg',cv2.Canny(img,200,300)) 复制代码
图片处理前 | 图片处理后 |
---|---|
2、人脸检测
haarcascade_frontalface_default.xml
,该文件为人脸检测器(默认)文件,文件可在OpenCV的 Github 上下载。
#-*- coding: utf-8 -*- import cv2 def detect(filename): face_cascade = cv2.CascadeClassifier('./data/haarcascades/haarcascade_frontalface_default.xml') # 读取图片 img = cv2.imread(filename) # 图片灰度处理 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 人脸检测,每次迭代图像压缩率、人脸矩形保留近邻数目最小值 faces = face_cascade.detectMultiScale(gray,1.3,6) # x,y为左上角坐标,w,h表示人脸宽度和高度 for(x,y,w,h) in faces: # 检测到人脸绘制成蓝色矩形 img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # 写入文件 cv2.imwrite('/Users/fangzhijie/Pictures/ig1.jpeg',img) filename = 'ig.jpeg' detect(filename) 复制代码
图片处理前 |
---|
图片处理后 |
剩下的三位没有识别出来,待定位原因。
3、图像匹配
搜索模板图片
原图
代码
# -*- coding: utf-8 -*- import cv2 import numpy as np from matplotlib import pyplot as plt # 读取图片 img = cv2.imread('ig.jpeg') template = cv2.imread('wsc123.png') # 对图片进行缩放,缩放到合适大小90*90 template = cv2.resize(template, (90, 90),interpolation=cv2.INTER_CUBIC) # 进行图像匹配 res = cv2.matchTemplate(img,template,eval('cv2.TM_CCOEFF')) # 记录模板的宽度和高度 w, h = template[:,:,0].shape[::-1] # 王思聪边框的具体位置 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 画出红框 top_left = max_loc bottom_right = (top_left[0] + w, top_left[1] + h) imgplt = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.rectangle(imgplt,top_left, bottom_right, 255, 2) # 显示图片 plt.imshow(imgplt) plt.title('Detected results'), plt.xticks([]), plt.yticks([]) plt.show() 复制代码
结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 降低云游戏延迟优化云游戏体验:贝塞斯达推出Orion技术,还公布了免费体验计划
- PyTorch 初体验
- indexedDB 初体验
- golang爬虫初体验
- Netty 入门初体验
- Ansible初体验
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网站运维技术与实践
饶琛琳 / 电子工业出版社 / 2014-3 / 69.00元
网站运维工作,一向以内容繁杂、覆盖面广著称。《网站运维技术与实践》选取日常工作涉及的监测调优、日志分析、集群规划、自动化部署、存储和数据库等方面,力图深入阐述各项工作的技术要点及协议原理,并介绍相关开源产品的实践经验。在技术之外,作者也分享了一些关于高效工作及个人成长方面的心得。 《网站运维技术与实践》适合Linux 系统管理员、中大型网站运维工程师及技术负责人、DevOps 爱好者阅读。同......一起来看看 《网站运维技术与实践》 这本书的介绍吧!