浅谈Python实现opencv之图片色素的数值运算和逻辑运算

数值运算

代码:

# -*- coding=GBK -*-
import cv2 as cv

# 数值运算:加减乘除
def shu_image(src11, src22):
          src = cv.add(src11, src22)  # 加 : 图像对应像素值相加,> 255 时取255
          cv.namedWindow("add",0)
          cv.resizeWindow("add", 300, 300)  # 设置播放窗口长和宽
          cv.imshow("add", src)
          src = cv.subtract(src11, src22)  # 减 : 图像对应像素值相减,< 0 时取0
          cv.namedWindow("subtract", 0)
          cv.resizeWindow("subtract", 300, 300)
          cv.imshow("subtract", src)
          src = cv.multiply(src11, src22)  # 乘 : 图像对应像素值相乘,> 255 时取255
          cv.namedWindow("multiply", 0)
          cv.resizeWindow("multiply", 300, 300)
          cv.imshow("multiply", src)
          src = cv.divide(src11, src22)  # 除 : 图像对应像素值相除,a( > 0) / 0 = 255
          cv.namedWindow("divide", 0)
          cv.resizeWindow("divide", 300, 300)
          cv.imshow("divide", src)

src1 = cv.imread("jueduisiwang.bmp")
src2 = cv.imread("fuchoutianshi.bmp")

cv.namedWindow("src1", 0)
cv.resizeWindow("src1", 300, 300)
cv.imshow("src1", src1)

src2 = src2[:,:30,:] # 两张图片尺寸大小要一样,不然就需要调整
cv.namedWindow("src2", 0)
cv.resizeWindow("src2", 300, 300)
cv.imshow("src2", src2)

shu_image(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()

结果:

逻辑运算

代码:

# -*- coding=GBK -*-
import cv2 as cv

# 逻辑运算:与或非的操作
def luo_image(src1, src2):
    src = cv.bitwise_and(src1, src2)
    cv.namedWindow("AND", 0)
    cv.resizeWindow("AND", 300, 300)
    cv.imshow("AND", src)
    src = cv.bitwise_or(src1, src2)
    cv.namedWindow("OR", 0)
    cv.resizeWindow("OR", 300, 300)
    cv.imshow("OR", src)
    src = cv.bitwise_not(src1)
    cv.namedWindow("NOR", 0)
    cv.resizeWindow("NOR", 300, 300)
    cv.imshow("NOR", src)
    src = cv.bitwise_xor(src1, src2)
    cv.namedWindow("XOR", 0)
    cv.resizeWindow("XOR", 300, 300)
    cv.imshow("XOR", src)

src1 = cv.imread("jueduisiwang.bmp")
src2 = cv.imread("fuchoutianshi.bmp")

cv.namedWindow("src1", 0)
cv.resizeWindow("src1", 300, 300)
cv.imshow("src1", src1)

src2 = src2[:,:30,:] # 两张图片尺寸大小要一样,不然就需要调整
cv.namedWindow("src2", 0)
cv.resizeWindow("src2", 300, 300)
cv.imshow("src2", src2)

luo_image(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()

结果(不太具有参考价值):

备注:

图像的逻辑或运算就是255-对应通道像素值,也就是“取反”操作(黑白图就是黑变白,白变黑)

黑白图和同尺寸任意图的逻辑或运算就是加法运算

黑白图和同尺寸任意图的逻辑与运算就是黑白图的黑白像素值互换然后与同尺寸任意图做加法运算

而彩色图之间的逻辑运算关系感觉太复杂了,没搞懂 : (

到此这篇关于浅谈Python实现opencv之图片色素的数值运算和逻辑运算的文章就介绍到这了,更多相关图片色素的数值运算和逻辑运算内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Python+opencv裁剪/截取图片的几种方式

    前言 在计算机视觉任务中,如图像分类,图像数据集必不可少.自己采集的图片往往存在很多噪声或无用信息会影响模型训练.因此,需要对图片进行裁剪处理,以防止图片边缘无用信息对模型造成影响.本文介绍几种图片裁剪的方式,供大家参考. 一.手动单张裁剪/截取 selectROI:选择感兴趣区域,边界框框选x,y,w,h selectROI(windowName, img, showCrosshair=None, fromCenter=None): . 参数windowName:选择的区域被显示在的窗口的名字

  • Python基于Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简单几句就说清,所以本文只作基本算法的科普向. 看到一篇博客是介绍这个,但他用的是PIL中的Image实现的,感觉比较麻烦,于是利用Opencv库进行了更简洁化的实现. 相关背景 要识别两张相似图像,我们从感性上来谈是怎么样的一个过程?首先我们会区分这两张相片的类型,例如是风景照,还是人物照.风景照中

  • Python OpenCV实现传统图片格式与base64转换

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,是一种基于64个可打印字符来表示二进制数据的方法.通过http传输图片常常将图片数据转换成base64之后再进行传输. Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规范. Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息.例如,在Java

  • python 基于opencv去除图片阴影

    一.前言 如果你自己打印过东西,应该有过这种经历.如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片.比如下面这两张图片: 因为左边的图片有大片阴影,所以打印出来的图片不堪入目(因为打印要3毛钱,所以第二张图片只是我用程序模拟的效果). 那有什么办法可以解决吗?答案是肯定的,今天我们就来探讨几个去除阴影的方法. 二.如何去除阴影? 首先为了方便处理,我们通常会对图片进行灰度转换(即将图片转换成只有一个图层的灰色图像). 然后我们分析一下,在上面的图片中有三个主色调,分别是

  • python解决OpenCV在读取显示图片的时候闪退的问题

    利用OpenCV练习读取图片的时候,图片总是一闪而过,不利于观察,这个时候需要利用到waitKey函数. waitKey函数:用来等待按键,当用户按下按键后,该语句会被执行,并获取返回值. 语法格式为retval=cv2.waitKey([delay]) retval:表示返回值: delay:表示等待按键触发的时间,单位是ms: 下面是简单的例子展示: import cv2 lena=cv2.imread("D:\pmjcv\lena.bmp") cv2.namedWindow(&q

  • 浅谈Python实现opencv之图片色素的数值运算和逻辑运算

    数值运算 代码: # -*- coding=GBK -*- import cv2 as cv # 数值运算:加减乘除 def shu_image(src11, src22): src = cv.add(src11, src22) # 加 : 图像对应像素值相加,> 255 时取255 cv.namedWindow("add",0) cv.resizeWindow("add", 300, 300) # 设置播放窗口长和宽 cv.imshow("add&

  • 浅谈python配置与使用OpenCV踩的一些坑

    下载opencv2.4.9(python2.7匹配)后 (1)运行OpenCV 2.4.9.exe: (2)配置Python:将\opencv\build\python\2.7\x64 这个目录下:cv2.pyd 复制到:Python27\Lib\site-packages\目录下: (3)测试:输入import cv2,如报错,说明未安装成功 1.opencv的版本一定要与python的版本匹配,否则是python是无法调用cv2这个模块的. 错误信息:ImportError DLL load

  • 浅谈Python Opencv中gamma变换的使用详解

    伽马变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正. 伽马变换的基本形式如下: 大于1时,对图像的灰度分布直方图具有拉伸作用(使灰度向高灰度值延展),而小于1时,对图像的灰度分布直方图具有收缩作用(是使灰度向低灰度值方向靠拢). #分道计算每个通道的直方图 img0 = cv2.imread('12.jpg') hist_b = cv2.calcHist([img0],

  • 浅谈python opencv对图像颜色通道进行加减操作溢出

    由于opencv读入图片数据类型是uint8类型,直接加减会导致数据溢出现象 (1)用Numpy操作 可以先将图片数据类型转换成int类型进行计算, data=np.array(image,dtype='int') 经过处理后(如:遍历,将大于255的置为255,小于0的置为0) 再将图片还原成uint8类型 data=np.array(image,dtype='uint8') 注意: (1)如果直接相加,那么 当像素值 > 255时,结果为对256取模的结果,例如:(240+66) % 256

  • 浅谈Python 命令行参数argparse写入图片路径操作

    什么是命令行参数? 命令行参数是在运行时给予程序/脚本的标志.它们包含我们程序的附加信息,以便它可以执行. 并非所有程序都有命令行参数,因为并非所有程序都需要它们. 为什么我们使用命令行参数? 如上所述,命令行参数在运行时为程序提供附加信息. 这允许我们在不改变代码的情况下动态地为我们的程序提供不同的输入 . 您可以绘制命令行参数类似于函数参数的类比.如果你知道如何在各种编程语言中声明和调用函数,那么当你发现如何使用命令行参数时,你会立刻感到宾至如归. 鉴于这是计算机视觉和图像处理博客,您在这里

  • 浅谈python中的占位符

    占位符,顾名思义就是插在输出里站位的符号.我们可以把它理解成我们预定饭店.当我们告诉饭店的时候,饭店的系统里会有我们的预定位置.虽然我们现在没有去但是后来的顾客就排在我们后面. 常见的占位符有三种: 1.%d 整数占位符 >>>'我考了%d分' % 20 '我考了20分' >>>'我考了%d分' % 20.5 ;我考了20分' >>>"我考了%d分,进步了%d分" % (50,10) "我考了50分,进步了10分"

  • 浅谈python迭代器

    1.yield,将函数变为 generator (生成器) 例如:斐波那契数列 def fib(num): a, b, c = 1, 0, 1 while a <= num: yield c b, c = c, b + c a += 1 for n in fib(10): print(n, end=' ') # 1 1 2 3 5 8 13 21 34 55 2.Iterable 所有可以使用for循环的对象,统称为 Iterable (可迭代) from collections import

  • 浅谈python中requests模块导入的问题

    今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: python中还没有安装requests库 解决办法: 1.先找到自己python安装目录下的pip 2.在自己的电脑里打开cmd窗口. 先点击开始栏,在搜索栏输入cmd,按Enter,打打开cmd窗口.在cmd里将目录切换到你的pip所在路径. 比如我的在C:\Python27\Scripts这个目录下,先切换到d盘,再进入这个路径. 具体命令:cd.

  • 浅谈Python 钉钉报警必备知识系统讲解

    本章所讲内容: 1.钉钉报警设置 2.钉钉报警脚本运行. 1.钉钉报警设置 钉钉,关于webhook的报警需求,钉钉报警也是我们在公司中常见的报警系统,在这里主要是结合zabbix二次开发使用,来达到完美报警的使用. 1.1.钉钉报警第一步,创建群机器人 接口地址: https://oapi.dingtalk.com/robot/send?access_token=a25324cafc5b0f2bb239b5e56c71e7f378f570a3d281160dbec9e4f8c4a7e493 文

  • 浅谈Python项目的服务器部署

    关于Web服务器和应用服务器 基本概念: Web服务器主要功能就是存储.处理.传递网页,客户端和服务器之间基于HTTP协议进行通信. 应用服务器主要是处理动态请求,调用相应的对象完成对请求的处理,返回响应的结果. 两者之间的区别: Web服务器主要是以HTTP为核心,WEB UI为向导的应用,处理一些静态请求. 应用服务器虽然也支持HTTP协议,但应用服务器可以通过很多协议为应用程序提供商业逻辑. Python项目部署架构 在我们平时搭建一个Python Web项目时,比如Django框架的项目

随机推荐