笔记-Python图片处理 (OpenCV-Python )

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV-Python是OpenCV的Python的API接口,它拥有OpenCV C++ API的功能,同时也拥有Python语言的特性,可以做到跨平台使用。但值得注意的是在Python3(目前使用的是Python3.7)里对OpenCV-Python接口的中文支持并不是很友好。

安装:

sudo pip3 install opencv-python

直方图模块安装:

pip3 install matplotlib

简单的读取一张图片:

 1 import cv2 #导入opencv库
 2 
 3 #读取一张图片,地址不能带中文
 4 imgviewx=cv2.imread("imgx/zcy.jpg")
 5 
 6 #创建一个窗口,中文显示会出乱码
 7 cv2.namedWindow("东小东标题")
 8 
 9 #显示图片,参数:(窗口标识字符串,imread读入的图像)
10 cv2.imshow("东小东标题",imgviewx)
11 
12 #窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数
13 cv2.waitKey(0)
14 
15 #销毁窗口,退出程序
16 cv2.destroyAllWindows()

其它属性详细介绍:

1 import cv2 #导入opencv库
  2 import numpy as np
  3 
  4 #.........................................................................
  5 #读取一张图片,地址不能带中文
  6 '''
  7 第二个参数,取值可为:
  8 cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道 
  9 cv2.IMREAD_GRAYSCALE:读入灰度图片 
 10 cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道(png有,jpg无)
 11 '''
 12 #imgviewx=cv2.imread("imgx/wa.jpg")
 13 imgviewx=cv2.imread("imgx/DONG.jpg",cv2.IMREAD_COLOR)
 14 
 15 #.........................................................................
 16 #获取图片信息
 17 #一个像素有三个通道,BGR
 18 print(imgviewx.shape)#输出:(1080, 1920, 3) 高像素,宽像素,通道数
 19 print(imgviewx.size)# 120000  总通道数=高* 宽* 通道数
 20 print(imgviewx.dtype)# uint8  3个通道每个通道占的位数(8位,一个字节)
 21 #print(imgviewx) #输出效果视乎与下条相同
 22 #print(np.array(imgviewx)) #输出每个像素点的参数( B , G , R )
 23 #获取图片 B G R 各均值, #(204.46305102040816, 208.50832244897958, 217.29540408163263, 0.0) ,红色部分最多
 24 print(cv2.mean(imgviewx))
 25 #获取方差,也会打印均值,可用均值方差都为零判断图片无效
 26 #print(cv2.meanStdDev(imgviewx))
 27 
 28 
 29 
 30 #.........................................................................
 31 #图片处理
 32 #备份图片
 33 imgviewx1=imgviewx.copy()
 34 
 35 #均值模糊,主要用于去除图片噪点
 36 #读取图片并实现图片的模糊效果,参数:(读取图片,(X轴方向模糊,Y轴方向模糊))
 37 #imgviewx=cv2.blur(imgviewx,(5,5))
 38 
 39 #中值模糊,主要用于去除椒盐(烧烤配料)噪点
 40 #参数:(图片信息,模糊值)
 41 #imgviewx=cv2.medianBlur(imgviewx,9)
 42 
 43 #普通高斯模糊
 44 #参数:(图片信息,参数1,参数2)参数1和参数2只能设置一个
 45 #imgviewx=cv2.GaussianBlur(imgviewx,(0,0),1)
 46 
 47 #保留边缘(像素差),高斯模糊
 48 #参数(图片信息,0,要用怎样的方式(越大则越细),空间复杂度(越大越复杂))
 49 imgviewx=cv2.bilateralFilter(imgviewx,0,50,6)
 50 
 51 
 52 #美颜,美白效果valuex值越大越白
 53 #valuex=50;
 54 #imgviewx=cv2.bilateralFilter(cv2.imread("imgx/zcy.jpg"),valuex,valuex * 2,valuex / 2)
 55 
 56 #对比度和亮度调整
 57 #duix=0.5 #对比度
 58 #lightx=0  #亮度
 59 #imgviewx=cv2.addWeighted(imgviewx,duix,np.zeros(imgviewx.shape,imgviewx.dtype),1-duix,lightx)
 60 
 61 
 62 
 63 #显示文字
 64 # 参数:图像,文字内容, 坐标( x , y ) ,字体,大小,颜色( B , G ,R ),字体厚度
 65 #颜色值为0-255
 66 font = cv2.FONT_HERSHEY_SIMPLEX  # 定义字体
 67 imgviewx = cv2.putText(imgviewx,"DONG XIAO DONG",(10, 50), font, 1.2, (0, 0, 255), 5)
 68 
 69 
 70 #像素取反
 71 #imgviewx=cv2.bitwise_not(imgviewx)
 72 
 73 
 74 
 75 #遍历图片,效率低,不推荐使用
 76 def xgtp():
 77    global imgviewx
 78    gx,kx,tx=imgviewx.shape#得到像素高度,像素宽度,通道数
 79 
 80    for g in range(0,gx):
 81        for k in range(0,kx):  #这里得到的是每个像素点,每个点由RGB三色构成
 82            if(k>0 and k<100):
 83                imgviewx[g,k,0]=0       # B
 84                imgviewx[g,k,1]=255       #  G
 85                imgviewx[g,k,2]=255        #  R
 86            else:
 87                imgviewx[g, k, 0] = imgviewx[g, k, 0] #获取到原来的值
 88    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白砌墙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值