像素运算

分为算术运算逻辑运算

算术运算:

加减乘除

调节亮度
调整对比度

逻辑运算:

与或非

遮罩层控制

一:算术运算

import cv2 as cv
import numpy as np def add_demo(m1,m2):
dst = cv.add(m1,m2)
cv.imshow("add_demo",dst) def subtract_demo(m1,m2):
dst = cv.subtract(m1,m2)
cv.imshow("subtract_demo",dst) def multiply_demo(m1,m2):
dst = cv.multiply(m1,m2)
cv.imshow("multiply_demo",dst) def divide_demo(m1,m2):
dst = cv.divide(m1,m2)  #不多用
cv.imshow("divide_demo",dst) src1 = cv.imread("./a1.jpg") #读取图片
src2 = cv.imread("./a2.jpg") #读取图片
print(src1.shape)
print(src2.shape)
cv.imshow("image1",src1)
cv.imshow("image2",src2)
add_demo(src1,src2)
subtract_demo(src1,src2)
multiply_demo(src1,src2)
divide_demo(src1,src2)
cv.waitKey() #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows() #销毁所有窗口

原图:

add:(黑色是0,白色为255,当大于255会为白色,小于0为黑色)

subtract:

multiply:

divide:

获得各个通道的均值:

def others(m1,m2):
M1 = cv.mean(m1)
M2 = cv.mean(m2)
print(M1)
print(M2)
(190.8543375, 190.8543375, 190.8543375, 0.0)  #整体偏黑
(186.68600625000002, 228.5496625, 241.74333125, 0.0)  #红绿较多,所以偏黄

获取各个图像的方差:

def others(m1,m2):
M1 = cv.mean(m1)
M2 = cv.mean(m2)
M1,dev1 = cv.meanStdDev(m1)  #返回均值和方差,分别对应3个通道
M2,dev2 = cv.meanStdDev(m2)
print(M1)
print(dev1)
print(M2)
print(dev2)
[[190.8543375]  #M1
[190.8543375]
[190.8543375]]
[[95.31664687]  #dev1
[95.31664687]
[95.31664687]]

[[186.68600625]  #M2
[228.5496625 ]
[241.74333125]]
[[72.40766216]  #dev2
[39.39460523]
[30.92104465]]

可以知道dev2偏小,所以图二中色彩差异(对比性)是较小的,若是整张图片同色,则方差为0,均值为0,可以用来查看扫描仪中是否有信息(方差小于一个预值,则失效,丢弃)

    img = np.zeros([,,],np.uint8)
m,dev = cv.meanStdDev(img)
print(m,dev)

二:逻辑运算

与and:(1和1为1)(类似遮罩,当我们使用白色遮罩)

def logic_and_demo(m1,m2):
dst = cv.bitwise_and(m1,m2)
cv.imshow("logic_and_demo",dst)

或or:(1和1,1和0都为1)

def logic_or_demo(m1,m2):
dst = cv.bitwise_or(m1,m2)
cv.imshow("logic_or_demo",dst)

异或xor:(1和0为1)

def logic_xor_demo(m1,m2):  #异或:不同为1,相同为0
dst = cv.bitwise_xor(m1,m2)
cv.imshow("logic_or_demo",dst)

非(not):对一张图片取反

def logic_not_demo(m1):  #非是对于一张图片
dst = cv.bitwise_not(m1)
cv.imshow("logic_not_demo",dst)

补充:针对视频中inrange

def extrace_object():
capture = cv.VideoCapture("./1.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([,,])
upper_hsv = np.array([,,])
mask = cv.inRange(hsv,lower_hsv,upper_hsv)
dst = cv.bitwise_and(frame,frame,mask=
mask)
cv.imshow("video",frame)
cv.imshow("mask", mask)
cv.imshow("dst",dst)
c = cv.waitKey()
if c == :
break

mask:该函数输出的dst是一幅二值化之后的图像(是将满足我们的图像对象所有位都设为1白色,不满足设置为0黑色)

bitwise_and:白色全为1与原图相与,会将白色区域提取

调整亮度和对比度addWeighted

推文:Opencv 例程讲解 6 ---- 图片融合 addWeighted到底有多快?

def contrast_brightness_demo(image,c,b):
'''
:param image: 原图
:param c: 对比度 是将像素乘与c,原来2,---->, 差距由2--->4导致对比增强
:param b: 亮度 是将每个像素点加上相关亮度
:return:
'''
h,w,ch = image.shape
blank = np.zeros([h,w,ch],image.dtype)
dst = cv.addWeighted(image,c,blank,1-c,b)
cv.imshow("dst",dst)
src = cv.imread("./1.png")
cv.imshow("src",src)
contrast_brightness_demo(src,1.2,)

亮度:

src = cv.imread("./1.png")
cv.imshow("src",src)
contrast_brightness_demo(src,,)

、第1个参数,输入图片1,
、第2个参数,图片1的融合比例
、第3个参数,输入图片2
、第4个参数,图片2的融合比例
、第5个参数,偏差
、第6个参数,输出图片

OpenCV---像素运算的更多相关文章

  1. Python+OpenCV图像处理(五)—— 像素运算

    最近在忙毕业设计,只能偶尔更新博客........ 一.像素的算术运算 像素的算术运算涉及加减乘除等基本运算(要进行算术运算,两张图片的形状(shape)必须一样) 代码如下: #像素的算术运算(加. ...

  2. opencv::卷积运算函数filter2D()

    opencv::卷积运算函数filter2D() 使用掩模板矩阵(kernel)计算每个像素值 与原图相比,没有黑边 int main(int argc, char** argv) { Mat src ...

  3. python opencv:像素运算

    以下运算两个图像的大小需要一样 算术运算: cv2.add(img1, img2):两个图像像素相加 cv2.subtract(img1, img2):两个图像像素相减 cv2.multiply(im ...

  4. 4、OpenCV Python 像素运算

    __author__ = "WSX" import cv2 as cv import numpy as np #前提需要运算的图像大小和类型完全相同 #算术运算 加减乘除 #逻辑运 ...

  5. OpenCV像素操作和图形绘制

    像素操作 #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespac ...

  6. OpenCV——像素数据类型总结<摘>

    1.Unsigned 8bits(一般的图像文件格式使用的大小)IplImage数据结构参数:IPL_DEPTH_8UCvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8U ...

  7. Opencv Mat运算(转)

    一.矩阵Mat I,img,I1,I2,dst,A,B; double k,alpha; Scalar s; //注意Mat的行列号是从0开始的 //定义矩阵a,b,c Mat a,b,c; //生成 ...

  8. opencv::像素重映射

    像素重映射(cv::remap) 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像. Remap( InputArray src, // 输入图像 Ou ...

  9. js像素运算问题

    通过DOM获取的某一距离属性(比如left)是带px单位的,直接对其算术运算不起效,要先把获取到的值处理一下去掉px单位. 方法一(用处理字符串的方式去除px): var x=document.get ...

  10. OpenCV——颜色运算(二)

    #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include & ...

随机推荐

  1. 20181120-6 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 03

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411] 版本控制地址    [https://git.coding.n ...

  2. 【探路者】团队互评Alpha版本

    [探路者]组互评连接: 1互评作品:SkyHunter http://www.cnblogs.com/zej87/p/7802000.html 2互评作品:爱阅app http://www.cnblo ...

  3. 20162316刘诚昊 第八周实验报告:实验二 Java面向对象程序设计

    实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习<L ...

  4. qq浏览器的用户体验

    用户界面: qq浏览器的用户界面简介,把一些不必要的东西去点,可以很容易让用户找到自己想看的网页,很方便. 记住用户的选择: qq浏览器和QQ相连,可是用QQ账户登录,并且会记住自己访问的高频网页,以 ...

  5. pspo过程文档

    项目计划总结:       日期/任务      听课        编写程序         阅读相关书籍 日总计          周一      110          60         ...

  6. ASP.NET MVC 4 内容映射

    文章:ASP.NET MVC 4 内容映射 地址:https://msdn.microsoft.com/zh-cn/library/gg416514(v=vs.108).aspx 模型-视图-控制器 ...

  7. 用vs调试项目的时候报HTTP 错误 403.14 - Forbidden

    曾经遇到过这种诡异的问题,你一定想不到,这个可能是因为你用svn合并的时候,导致了你的dll文件出了问题. 竟然可以用主干的dll替换的方式,解决掉这个问题.

  8. J2EE体系

    J2EE的概念 目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME).适用于桌面系统的J ...

  9. jQuery之过滤元素

    还是那句话,这些知识一个小小的练习,更多的请看jQuery手册 在jQuery对象中的元素对象数组中过滤出一部分元素来1. first()2. last()3. eq(index|-index)4. ...

  10. Java实现的词频统计

    要求: 1.读取文件: 2.记录出现的词汇及出现频率: 3.按照频率降序排列: 4.输出结果. 概要: 1.读取的文件路径是默认的,为了方便调试,将要统计的文章.段落复制到文本中即可:2.只支持英文: ...