python opencv处理图片
1、图像读入:cv2.imread()
使用函数cv2.imread(filepath,flags) 读入图像。第二个参数是要告诉函数应该如何读取这幅图片。
- cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
PS:调用opencv时,即使图像的路径是错的,OpenCV 也不会报错,但执行命令print img时得到的结果是None。
2、显示图像cv2.imshow()
使用函数cv2.imshow(win_name,img) 显示图像。第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小。你可以创建多个窗口,但是必须给他们不同的名字。
- cv2.imshow('image',img)
- cv2.waitKey(0)
- cv2.destroyAllWindows() #cv2.destroyWindow(wname)
cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow()销毁所有窗口
cv2.destroyWindow(wname)销毁指定窗口
3、保存图像cv2.imwrite()
- cv2.imwrite(file,img,num),第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
4、图片缩放cv2.resize()
cv2.resize(InputArray, OutputArray, Size, fx, fy, interpolation)
参数解释:
- InputArray src 输入图片
- OutputArray dst 输出图片
- Size 输出图片尺寸,输出尺寸格式为(宽,高)
- fx, fy 沿x轴,y轴的缩放系数
- interpolation 插入方式,默认的插值方法为:双线性插值
interpolation 选项所用的插值方法:
- INTER_NEAREST 最近邻插值
- INTER_LINEAR 双线性插值(默认设置)
- INTER_AREA 使用像素区域关系进行重采样。
- INTER_CUBIC 4x4像素邻域的双三次插值
- INTER_LANCZOS4 8x8像素邻域的Lanczos插值
import cv2 as cv
img = cv.imread('test.jpg') # 读入原图片
print(img.shape) # 打印出图片尺寸
x, y = img.shape[0:2] # 将图片高和宽分别赋值给x,y
cv.imshow('OriginalPicture', img) # 显示原图
img_test1 = cv.resize(img, (int(y / 2), int(x / 2)))# 缩放到原来的二分之一,输出尺寸格式为(宽,高)
cv.imshow('resize0', img_test1)
cv.waitKey()
img_test2 = cv.resize(img, (0, 0), fx=0.25, fy=0.25, interpolation=cv.INTER_NEAREST) # 最近邻插值法缩放,缩放到原来的四分之一
cv.imshow('resize1', img_test2)
cv.waitKey()
cv.destroyAllWindows()
综合举例:
import os
import cv2
import glob bmp_files=glob.glob('*.bmp')
for i,file in enumerate(bmp_files):
img = cv2.imread(file,-1) # 读图,-1为不改变图片格式,0为灰度图
newName = file.replace('.bmp','.jpg')
img_new=cv2.resize(img,(960,540))
cv2.imwrite(os.path.join(jpg_dir,newName),img,[cv2.IMWRITE_JPEG_QUALITY,85]) #压缩图片
print('第%d张图:%s'%(i+1,newName))
参考:https://blog.csdn.net/qq_36563273/article/details/110000276
https://blog.csdn.net/fu6543210/article/details/80835280
python opencv处理图片的更多相关文章
- python opencv识别蓝牌车牌号 之 取出车牌号 (1/3)
概述 车牌识别是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常来讲如果结合opencv进行车牌识别主要分为四个大步骤,分别为: 图像采集 车牌定位 分割车牌字符 字符识别 当然,如果结合了机器 ...
- Python+opencv打开修图的正确方式get
先逼逼两句: 图像是 Web 应用中除文字外最普遍的媒体格式. 流行的 Web 静态图片有 JPEG.PNG.ICO.BMP 等.动态图片主要是 GIF 格式.为了节省图片传输流量,大型互联网公司还会 ...
- 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...
- .NET + OpenCV & Python + OpenCV 配置
最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...
- RPi 2B python opencv camera demo example
/************************************************************************************** * RPi 2B pyt ...
- qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
在用opencv处理图片显示在qt label上的时候遇到不是问题 1. qt上要用qimage形式才干显示 IplImage转成 Qimage 彩色图像转换 IplImage *fram; QIm ...
- Python+OpenCV图像处理(一)
Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...
- python opencv show图片,debug技巧
debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...
- Python+OpenCV图像处理(一)——读取显示一张图片
先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...
随机推荐
- android设置时钟
<TextClock android:id="@+id/timeText" android:layout_width="match_pa ...
- Django(39)使用redis配置缓存
前言 动态网站的基本权衡是,它们是动态的.每次用户请求页面时,Web服务器都会进行各种计算 - 从数据库查询到模板呈现再到业务逻辑 - 以创建站点访问者看到的页面.从处理开销的角度来看,这比标准的 ...
- windows下nginx配合nodejs进行反向代理
本文原创,转载请附上原作者链接!https://www.cnblogs.com/LSWu/articles/14848324.html 1.安装node.js 从node.js官网上下载node.js ...
- GO学习-(24) Go语言操作Redis
Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用. Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据 ...
- Python+Selenium - 下拉列表处理
下拉列表分两种:select下拉表和非select下拉表. 1.select下拉列表 如下图元素代码展示 可用Select类处理 from selenium.webdriver.support.sel ...
- C# HTTP请求对外接口、第三方接口公用类
/// <summary> /// 网络数据请求公共函数 /// </summary> public class HttpWebRequestCommon { #region ...
- Go benchmark 详解
前言 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器. 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理 ...
- wrk(1)- 详细使用
介绍 wrk 是一个类似 ab(apache bench).jmeter 的压力测试工具,官方称它为:现代的 HTTP 基准测试工具 用 C 编写的 HTTP 协议压测工具 底层基于 epoll 和 ...
- mysql-8.0.16-winx64.zip安装教程详解
摘自:https://zhuanlan.zhihu.com/p/48531203 mysql-8.0.16-winx64.zip安装教程详解下载地址:https://dev.mysql.com/get ...
- javaBean命名规范 get / set 后的首字母大写
javaBean命名规范 Sun 推荐的命名规范 1 ,类名要首字母大写,后面的单词首字母大写 2 ,方法名的第一个单词小写,后面的单词首字母大写 3 ,变量名的第一个单词小写,后面的单词首字母大写 ...