OpenCV+python:像素运算
一、数值运算(调节亮度,调整对比度)
OpenCV提供的图片色素的处理函数(运算的要求:两张图片的shape要一样):
(1)相加:add()
(2)相减:subtract()
(3)相乘:divide()
(4)相除:multiply()
原理就是:通过获取两张(一次只能是两张)个图片的同一个位置的色素值来实现运算,黑色是0,白色为255,当大于255会为白色,小于0为黑色。
import cv2 as cv#数值运算:加减乘除def shu_image(src11, src22):src = cv.add(src11, src22)#加cv.imshow("add", src)src = cv.subtract(src11, src22)#减cv.imshow("subtract", src)src = cv.divide(src11, src22)#乘cv.imshow("divide", src)src = cv.multiply(src11, src22)#除cv.imshow("multiply", src)src1 = cv.imread("D:/images/demo1.png")src2 = cv.imread("D:/images/demo2.png")cv.imshow("11", src1)cv.imshow("22", src2)shu_image(src1, src2)cv.waitKey(0)cv.destroyAllWindows()
(5)获取各个通道的均值
m = cv.mean(image)print(m) #都过小则偏暗,单个过大的通道可认为是主色彩
(6)获取每个图像的方差
m,dev = cv.meanStdDev(image) #返回均值和方差,分别对应3个通道
print(m)
print(dev) 过大说明像素间的差异就大
若dev小,则说明图片的色彩差异(对比性)是较小的,若整张图片同色,则方差是0,均值是0,可以用来查看扫描仪中是否有信息丢失(方差小于一个预值,则失效,丢弃)
二、逻辑运算(遮罩层控制)
1,opencv提供图片像素的处理函数:
与:bitwise_add() (类似于遮罩,当我们使用白色遮罩)
或:bitwise_or()
非:bitwise_not() (对一张图片取反)
异或:bitwise_xor()
import cv2 as cv#逻辑运算:与或非的操作
def luo_image(src11, src22):src = cv.bitwise_and(src11, src22) # 两张图片同一位置的色素两个值均不为零的才会有输出cv.imshow("与", src)src = cv.bitwise_or(src11, src22) # 两张图片同一位置的色素两个值不全为零的才会有输出cv.imshow("或", src)src = cv.bitwise_not(src11) # 对一张图片操作 取反cv.imshow("非", src)src = cv.bitwise_xor(src11, src22) # 两张图片同一位置的色素两个值有一个为零,另一个不为零才会输出cv.imshow("异或", src)src1 = cv.imread("D:/images/demo1.png")src2 = cv.imread("D:/images/demo2.png")cv.imshow("11", src1)cv.imshow("22", src2)luo_image(src1, src2)cv.waitKey(0)cv.destroyAllWindows()
2,针对视频中inrange,先将image二值化,提取出目标对象,然后再与原图bitwise_and,就会把目标对象提取出来关于lower_hsv 和 upper_hsv 的取值参见下表:
import cv2 as cv
import numpy as npdef extrace_object_demo(): #追踪有颜色的对象capture = cv.VideoCapture("D:/vcprojects/images/video.mp4")while(True):ret, frame = capture.read() #frame是每一帧图像,ret是返回值,为0是表示图像读取完毕if ret == False:break;hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV) lower_hsv = np.array([37, 43, 46])upper_hsv = np.array([77, 255, 255])mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv) #该函数输出的dst是一幅二值化之后的图像(是将满足我们的图像对象所有位都设为1白色,不满足设置为0黑色)dst = cv.bitwise_and(frame, frame, mask=mask) #提取出目标对象,然后再与原图bitwise_and,就会把目标对象提取出来cv.imshow("video", frame)cv.imshow("mask", mask)cv.imshow("dst", dst)c = cv.waitKey(40)if c == 27: #退出break
3,调整亮度和对比度 addWeighted
def contrast_brightness_demo(image,c,b):''':param image: 原图:param c: 对比度 是将像素乘与c,原来2,4---->4, 8 差距由2--->4导致对比增强:param b: 亮度 是将每个像素点加上相关亮度:return:'''h,w,ch = image.shapeblank = np.zeros([h,w,ch],image.dtype) #创建一个全黑图像dst = cv.addWeighted(image,c,blank,1-c,b)cv.imshow("dst",dst)
说明
基本原理:两张图片合成。dst = src1alpha+src2beta+gamma
对比度:制造一个全黑(像素为0),通过权重相加,乘以倍数就会使像素之间的差异性成倍增大,对比度提升
亮度:+像素值,让图片像素往255靠近,(255,255,255)是白色,图片越来越亮
1、第1个参数,输入图片1,
2、第2个参数,图片1的融合比例
3、第3个参数,输入图片2
4、第4个参数,图片2的融合比例
5、第5个参数,偏差
6、第6个参数,输出图片
OpenCV+python:像素运算相关推荐
- python像素处理_Python+OpenCV图像处理(五)—— 像素运算
最近在忙毕业设计,只能偶尔更新博客........ 一.像素的算术运算 像素的算术运算涉及加减乘除等基本运算(要进行算术运算,两张图片的形状(shape)必须一样) 代码如下: #像素的算术运算(加. ...
- opencv进阶学习笔记3:像素运算和图像亮度对比度调节
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...
- python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)
(七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...
- OpenCV+python:Canny边缘检测算法
1,边缘处理 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用. 在空域运算中来说,对图像的锐化就是计算微分.由于数字 ...
- openCV—Python(6)—— 图像算数与逻辑运算
openCV-Python(6)-- 图像算数与逻辑运算 一.函数简介 1.add-图像矩阵相加 函数原型:add(src1, src2, dst=None, mask=None, dtype=Non ...
- OpenCV Python教程(3)(4)(5): 直方图的计算与显示 形态学处理 初级滤波内
OpenCV Python教程(3.直方图的计算与显示) 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途 ...
- 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...
- python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件
基本知识 灰度图像的存储方式: image 多通道图像存储方式 image OpenCV 中的通道存储为 BGR 像素值的存储方式 RGB 模式,显示设备采用这种模式 HSV.HLS 将颜色分解成色调 ...
- 美颜(磨皮,大眼)opencv python实现
本文是利用opencv python 的美颜(磨皮,大眼)实现. 1 磨皮 1.1 导向滤波 磨皮使用的是导向滤波进行磨皮.关于导向滤波的介绍,可以看我的另一篇文章导向滤波与opencv python ...
- 用Numba加速OpenCV Python视频处理代码,提升6.5倍性能
使用Numba对OpenCV Python视频处理代码加速.性能提升6.5倍 1.目标问题: 在 OpenCV Python 中视频处理是比较耗资源的,从而造成画面卡顿,如果跳帧处理可能造成丢失关键数 ...
最新文章
- 工行分布式数据库选型与大规模容器化实践
- Buildroot用户指南
- 3.TF-IDF算法介绍、应用、NLTK实现TF-IDF算法、Sklearn实现TF-IDF算法、算法的不足、算法改进
- 最小错误率贝叶斯决策
- Spring Boot笔记-拦截器相关(用户权限方面)
- 博客搬家到github啦
- Python优雅地可视化数据
- mysql 作业调度及问题解决
- JAVA之多线程概念及其几种实现方法优劣分析
- mysql基础之mariadb集群主从架构
- ora使用动态sql给变量赋值
- uc浏览器登录报错50001解决方案,登录失败,请重试50001
- 计算机快捷键英语,输入法电脑中英文切换快捷键
- 京东:亦庄CBD里,南五环“村民”的生活哲学
- ftp 服务器 性能,Xlight FTP服务器网络性能测试
- 沧桑,何尝不是一种美丽 ----红尘一笑
- wps excel 中将一行多列数据转换为一行两列的格式 的方法函数
- 美国佐治亚大学计算机专业,美国计算机专业大学排名TOP10
- (几何方面:六边形面积)编写程序,提示用户输入六边形的边长,然后输出显示它的面积。 计算六边形面积的公式是:area= s2 这里的s就是边长。下面是一个运行示例: 请输入边长:5.5
- 《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》
热门文章
- 2022-2028年中国IT外包市场投资分析及前景预测报告
- 2022-2028年中国文化产业园投资分析及前景预测报告(全卷)
- 算法基础(09)— 字符串常用操作
- 不同的设计模式的特点总结
- 难忘的一天——装操系统(五)
- 离线安装Visual Studio Code插件
- Pytorch两种模型保存方式
- Python学习--not语句
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) TNS-12541: TNS:no li
- 第三天:Vue的组件化