python+opencv图像处理(七)

图像相减

图像可以做加法,当然也可以做减法,还可以做乘除法呢,这叫图像的四则运算。
本篇介绍两幅图像相减,以及使用加减法进行图像亮度增强。
图像相减的用处也比较多,比如视频中,要知道上一时刻和下一时刻同一场景中有什么不同,可直接相减。图像相减在医学里用得比较多,将病者的图像与正常人的图像一减,就知道多长了个什么了。。。
生命可贵,且行且珍惜。。。

------------------------------------我是分呀分割线

1、-法

这个比较简单,因为它是按照同一位置的两个像素值去减,只是做减法时要注意,轻易相减会引起<0的问题,用-号来减时,它是去%255得到的值来替代。

如下图,左图是上篇用加法相加得到的结果图。中间是原本组合成的一张图像。右图是前两图用-号相减得到的结果图,看起来是不是够乱...

import cv2 as cv

img1=cv.imread("E:/image/jiaresult.jpg")

img2=cv.imread("E:/image/add1.jpg")

img=img1-img2

cv.imshow("img1",img1)

cv.imshow("img2",img2)

cv.imshow("img",img)

所以,很多时候,需要自己对运算结果来进行划分。

彩色图像比较麻烦,所以我做了灰度图像的,当结果<0时,赋值为0。结果如下。

import cv2 as cv

import numpy as np

import matplotlib.pyplot as plt

img1=cv.imread("E:/image/jiaresult.jpg",0)

img2=cv.imread("E:/image/add1.jpg",0)

img=np.zeros(img1.shape)

w,h=img1.shape

for i in range(w):

for j in range(h):

if int(img1[i][j])-int(img2[i][j])<0:

img[i][j]=0

else:

img[i][j]=int(img1[i][j])-int(img2[i][j])

cv.imshow("img1",img1)

cv.imshow("img2",img2)

cv.imshow("img",img)

2、subtract()相减

这是opencv自带的函数,当相减的值<0时,它会自动赋值为0.

如下图所示,右图即为结果图,可看到,背景部分,由于全是白色,255-255以后变成了0,所以图中背景部分全为0.其余部分根据相减的结果显示出来,至少,还是有个形状在了。

其代码如下:

import cv2 as cv

img1=cv.imread("E:/image/jiaresult.jpg")

img2=cv.imread("E:/image/add1.jpg")

img=cv.subtract(img2,img1)

cv.imshow("img1",img1)

cv.imshow("img2",img2)

cv.imshow("img",img)

如果反过来,用subtract(img2,img1),得到的结果是不一样的,如下图所示。

3、利用图像加减法进行图像强度增强

对一幅图像,是可以对其进行亮度的提升和降低的,方法有很多,加减即为其中最简单的一种。
例下图所示:
用加法可使图像变亮。
下图,用减法,使图像变暗。
(0)

相关推荐

  • Python进阶——OpenCV之Core Operations

    文章目录 图像基本操作 访问并修改像素值 访问图像的属性 设置图像区域 图像分割与合并 画图像边框 图像的数学操作 图像叠加 图像融合 图像位操作 Python OpenCV代码检测与速度优化 时隔一 ...

  • OpenCV探索之路(二):图像处理的基础知识点串烧

    opencv图像初始化操作 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using n ...

  • 基于OpenCV的图像强度操作

    重磅干货,第一时间送达 01. 什么是图像强度操作 更改任何通道中的像素值 对图像的数学运算 亮度变化 对比度变化 伽玛操纵 直方图均衡 图像预处理中的滤波等增强 使用OpenCV加载图像 impor ...

  • 好玩的OpenCV:图片操作的基本知识(1)

    图像基本知识 图像是由像素组成的,而像素实际上就是带有坐标位置和颜色信息的点.我们把图片想象成由若干行,若干列的点组成的, 现实中有RGB颜色系统,我们可以把图中任意一点(位置在第m行,第n列)的点A ...

  • OpenCV基础知识入门

    本文旨在让你快速入门opencv. OpenCV OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用.该库是一个跨平台的开源库,是免费使 ...

  • OpenCV探索之路(五):图片缩放和图像金字塔

    对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用 ...

  • 【从零学习OpenCV 4】双边滤波

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 【从零学习OpenCV 4】中值滤波

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 常见的图像处理技术

    重磅干货,第一时间送达 本期文章中,让我们一起来学习以下内容. 通过PIL和OpenCV来使用一些常见的图像处理技术,例如将RGB图像转换为灰度图像.旋转图像.对图像进行消噪.检测图像中的边缘以及裁剪 ...

  • 快速指南:使用OpenCV预处理神经网络中的面部图像的

    重磅干货,第一时间送达 本期将介绍脸部检测.眼睛检测:图像拉直.裁剪.调整大小.归一化等内容 目前,涉及面部分类的计算机视觉问题,通常都需要使用深度学习.因此在将图像输入神经网络之前,需要经过一个预处 ...