Python openCV基础操作
1.图片加载、显示和保存
import cv2
# 读取图片
img = cv2.imread("img1.jpg")
# 生成灰色图片
imgGrey = cv2.imread("img1.jpg",0)
# 展示原图
cv2.imshow("img",img)
# 展示灰色图片
cv2.imshow("imgGrey",img)
# 等待图片的关闭
cv2.waitKey()
# 保存图片
cv2.imwrite("Copy.jpg",imgGrey)
2.图像显示窗口创建于销毁
cv2.namedWindow(创空名,属性)创建一个窗口
属性一般指定窗口大小模式:
cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
cv2.WINDOW_NORMAL:窗口大小可调整
cv2.destoryAllWindows(窗口名)删除任何建立的窗口
import cv2
img = cv2.imread("img",cv2.WINDOW_NORMAL)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destoryAllWindows()
3.图片宽、高、通道数获取
img.shape 返回图像高(图像矩形的行数)、(图像矩形的列数)和通道数3个属性组成的元祖(png为4通道),若图像是非彩色图,则只返回高和宽组成的元祖。
import cv2
img = cv2.imread("1.jpg")
imgGrey = cv2.imread("1.jpg",0)
sp1 = img.shape
sp2 = imgGrey.shape
print(sp1)
print(sp2)
# =====输出======
# (800,800,3)
# (800,800)
4.图像像素数目和图像数据类型的获取
图像矩形img的size属性和dtype分别对象图像的像素总数目和图像数据类型。一般情况下,图像的数据类型是unit8。
import cv2
img = cv2.imread("1.jpg")
imgSize = img.size
print(imgSize)
ty = img.dtype
print(ty)
# ====输出=====
# 691200
# uint8
5生成指定大小的空图像
生成指定大小的空图像
import cv2
import numpy as np
img = cv2.imread("1.jpg")
imgZero = np.zeros(img.shape,np.uint8)
imgFix = np.zeros((300,500,3),np.uint8)
cv2.imshow("img",img)
cv2.imshow("imgZero",imgZero)
cv2.imshow("imgFix",imgFix)
cv2.waitKey()
6.生成透明图圆形色块
cv2.circle(图片,圆心位置,圆半径,颜色,-1)
import cv2
import numpy as np
imgZero = np.zeros((400),np.uint8)
cv2.namedWindow('draw circles')
cv2.circle(img,(200,200),200,(0,0,255,255),-1)
cv2.imshow("imgGrey",img)
cv2.waitKey()
cv2.imwrite("Copy.png",img)
7.访问和操作图像像素
OpenCV中图像矩阵的顺序是B、G、R。可以直接通过坐标位置访问和操作图像像素。
import cv2
img = cv2.imread("01.jpg")
numb = img[50,100]
print(numb)
img[50,100] = (0,0,255)
cv2.imshow("img",img)
cv2.waitKey()
分开访问图像某一通道像素
import cv2
img = cv2.imread("01.jpg")
img[0:100,100:200,0] = 255
img[100:200,200:300,1] = 255
img[200:300,300,400,2] = 255
cv2.imshow("img",img)
cv2.waitKey
更改图像某一矩形区域的图像值也很方便
import cv2
img = cv2.imread("01.jpg")
img[0:50,1:100] = (0,0,255)
cv2.imshow("img",img)
cv2.waitKey()
8.图像三通道分离和合并
分离图像通道可以使用cv2中的split函数,合并使用merge函数
import cv2
img = cv2.imread("01.jpg")
b , g , r = cv2.split(img)
merged = cv2.merge([b,g,r])
cv2.imshow("Blue",b)
cv2.imshow("Green",g)
cv2.imshow()"Red",r)
cv2.imshow("Merged",merged)
cv2.waitKey()
8.在图像上输出文字
使用putText函数在图片上输出文字,函数原型:
putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType=None,bottomLeftOrigin=None)
- img:图像
- text:要输出的文本
- org:文字的起点坐标
- fontFace:字体
- fontScale:字体大小
- color:字体颜色
- thickness:字图加粗
img = cv2.imread("01.jpg")
cv2.putTtext(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))
cv2.imshow("img",img)
cv2.waitKey()
9.图像缩放
import cv2
img = cv2.imread("1.jpg")
cv2.imshow("img",img)
imgg = cv2.resize(img,(200,100))
cv2.imshow("imgg",imgg)
cv2.waitKey()
10.图片灰度化处理
from matplotlib import pyplot as plt
import cv2
form pylab import *
#添加中文字体支持
from matplotlib.font_manager import FontProperties
fot = FontProperties(fname = r"c:\windows\fonts\SimSun,ttc",size = 14)
# 载入图像
im = cv2.imread("1.jpg")
# 显示原始图像
fig = plt.figure()
subplot(121)
plt.gray()
im2 = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # OpenCV采用BGR排序,需要转换一下
imshow(im2)
title(u'彩色图',fontproperties= font)
axis('off')
# 显示灰度化图像
# 颜色空间转换
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
plt.subplot(122)
plt.gray()
imshow(gray)
title(u"灰度图",fontproperties=font)
axis('off')
show()
Python openCV基础操作的更多相关文章
- Python文件基础操作(IO入门1)
转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] Python文件基础操作(IO入门1) 1. pyth ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- python列表基础操作
Python列表基本操作 记住一句话,叫做顾首不顾尾 首先我们来定义一个列表 name = ["jixuege","dajiba","boduoye& ...
- Python字符串基础操作
==============字符串======== >>> s1='www.baidu.com' >>> type(s1) <type 'str'> & ...
- 图像混合学习。运用加权函数,学习opencv基础操作
{ cout<< } { cout<< } ,,logoImage.c ...
- python 图像处理基础操作
Python 读取图片文件为矩阵和保存矩阵为图片 读取图片为矩阵 import matplotlib im = matplotlib.image.imread('0_0.jpg') 保存矩阵为图片 i ...
- python Django基础操作
Django常用命令 创建Django项目 Django-admin startprotect mysite 创建项目以后,以下生成的文件 最外层的file:mysite/ 根目录只是你的项目的容器 ...
- python git 基础操作
模块安装 pip install gitpython 基本用法 1. 初始化 from git import Repo Repo.init('/data/test2') # 创建一个git文件夹 # ...
- python的基础操作2
一 字符串格式化 占位符 %s和%d %s是属于字符串的占位符,而%d是属于数字类型的占位符 #占位符 %s %d # a="我叫%s,年龄%d,就是一个%s"%("al ...
随机推荐
- LInux、xshell(windows)以及finalshell(mac)的常用命令
一.Linux历史知识: 应用:安装在各种服务器之上,用于嵌入式 版本:内核版本,发行版本(各个公司对其优化) 二.目录介绍 root:系统管理员登录的默认目录 home:其他用户进来的默认目录 us ...
- 【题解】球迷购票问题-C++
题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...
- 数据结构---Set和Map
1.Set数据结构 Set本质上是一个没有重复数据,但是具有irerator接口可以遍历的一种集合. Set本身也是一种数据结构的构造函数. 1.Set的初始化 var obj = new Set(参 ...
- Activiti--Activity数据库
23张表 ACT_RE_资源库流程规划表 act_re_deployment 部署信息表 act_re_model 流程设计模型部署表 act_re_procdef 流程定义数据表 ACT_RU_运行 ...
- hive 常用参数
hive.exec.max.created.files •说明:所有hive运行的map与reduce任务可以产生的文件的和 •默认值:100000 hive.exec.dynamic.partit ...
- JAVA基础知识|Socket
一.什么是Socket? Socket本身并不是协议,是一套完成TCP.UDP协议的调用接口(API),通过socket我们才能使用TCP/IP协议(JAVA基础知识|TCP/IP协议).Socket ...
- 【locust】使用locust + boomer实现对接口的压测
背景 很早之前,考虑单机执行能力,使用locust做过公司短信网关的压测工作,后来发现了一个golang版本的locust,性能是python版本的5到10倍以上,但是一直没有机会使用. 最近公司想做 ...
- pwn学习日记Day11 《程序员的自我修养》读书笔记
阅读基础 计算机系统软件体系结构采用一种层的结构--计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决. 多线程的优势: 1.某个操作可能会陷入长时间等待,等待的线程会进入睡眠状态,无法继续 ...
- 连接Android模拟器
一.如何找到adb? 安装夜神安卓模拟器后,电脑桌面会有“夜神模拟器”的启动图标,鼠标右键--打开文件所在的位置,就会进入***\Nox\bin,默认路径是C:\Program Files (x ...
- 背包DP 方案数
题目 1 P1832 A+B Problem(再升级) 题面描述 给定一个正整数n,求将其分解成若干个素数之和的方案总数. 题解 我们可以考虑背包DP实现 背包DP方案数板子题 f[ i ] = f[ ...