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处理图片的更多相关文章

  1. python opencv识别蓝牌车牌号 之 取出车牌号 (1/3)

    概述 车牌识别是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常来讲如果结合opencv进行车牌识别主要分为四个大步骤,分别为: 图像采集 车牌定位 分割车牌字符 字符识别 当然,如果结合了机器 ...

  2. Python+opencv打开修图的正确方式get

    先逼逼两句: 图像是 Web 应用中除文字外最普遍的媒体格式. 流行的 Web 静态图片有 JPEG.PNG.ICO.BMP 等.动态图片主要是 GIF 格式.为了节省图片传输流量,大型互联网公司还会 ...

  3. 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台

    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...

  4. .NET + OpenCV & Python + OpenCV 配置

    最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...

  5. RPi 2B python opencv camera demo example

    /************************************************************************************** * RPi 2B pyt ...

  6. qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题

    在用opencv处理图片显示在qt label上的时候遇到不是问题 1. qt上要用qimage形式才干显示 IplImage转成 Qimage 彩色图像转换 IplImage  *fram; QIm ...

  7. Python+OpenCV图像处理(一)

    Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...

  8. python opencv show图片,debug技巧

    debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...

  9. Python+OpenCV图像处理(一)——读取显示一张图片

    先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...

随机推荐

  1. pre -regulator 前端稳压器

    regulator

  2. docker存储驱动

    http://www.sohu.com/a/101016494_116235 https://success.docker.com/article/compatibility-matrix Red H ...

  3. Mybatis Plus 多租户架构实现(完美教程)

    一.背景介绍 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 简单讲 ...

  4. F5 BIG-IQ 8.0 发布 - 借助一个统一的管理平台,管理您的所有 BIG-IP 设备和服务

    针对完整可见性和控制的 BIG-IQ 集中式管理 BIG-IP 设备和服务的端到端控制 高效管理(编排.可见性和合规性)依赖于跨本地和云部署中始终如一的应用服务和安全策略.利用独立统一的管理平台实现对 ...

  5. Runtime PM 处理不当导致的 external abort on non-linefetch 案例分享

    硬件平台:某ARM SoC 软件平台:Linux 1 Runtime PM 简介 在介绍 Runtime PM 之前,不妨先看看传统的电源管理.传统的电源管理机制,称之为 System PM(Syst ...

  6. anaconda同时集成Python2 和 Python3

    参考帖子,亲测有效: 利用anaconda同时使用python2和python3的方法 注意:最后一步是再对应的python环境中输入:conda install anaconda

  7. (续篇)Selenium 安装配置以及如何解决('chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/ch)或者(unknown error:cannot find Chrome binary)问题?

    注:本帖针对小小白哦~~(づ ̄3 ̄)づ╭- 接pip安装的帖子,不需要的直接跳过... 首先上图,出现如下的错误,那你可是找到知己了: 或者: 抱歉抱歉,这图截的不太清晰,凑合着用吧,但是也能看出来错 ...

  8. TensorFlow用法

    TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...

  9. CVPR2020:基于层次折叠的跳跃式注意网络点云完成

    CVPR2020:基于层次折叠的跳跃式注意网络点云完成 Point Cloud Completion by Skip-Attention Network With Hierarchical Foldi ...

  10. 面试官:说一下JVM常用垃圾回收器的特点、优劣势、使用场景和参数设置

    今天去看牙医,他问我年级轻轻牙齿怎么磨损这么严重?我说,没有人点赞的这些年,我都是咬着牙过来的. Java中的垃圾回收器几乎是面试中的必考点,无论是面试初级,中级还是高级,总免不了要问一问垃圾回收器的 ...