OpenCV半小时掌握基本操作之像素加减乘除&逻辑运算

目录
  • 概述
  • 加减乘除
    • 相加
    • 相减
    • 相乘
    • 相除
  • 逻辑运算
    • 逻辑与
    • 逻辑或
    • 逻辑反

【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️像素加减乘除 & 逻辑运算

概述

OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界.

加减乘除

原图:

相加

import cv2

def add(image1, image2):
    """相加"""

    result = cv2.add(image1, image2)

    cv2.imshow("add_demo", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获得相加的图片
    add = add(img1, img2)

    # 保存图片
    cv2.imwrite("add.jpg", add)

输出结果:

相减

import cv2

def subtract(image1, image2):
    """相减"""

    result = cv2.subtract(image1, image2)

    cv2.imshow("add_demo", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获取相减图片
    subtract = subtract(img1, img2)

    # 保存图片
    cv2.imwrite("subtract.jpg", subtract)

输出结果:

相乘

import cv2

def multiply(image1, image2):
    """相成"""

    result = cv2.multiply(image1, image2)

    cv2.imshow("add_demo", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获取相乘图片
    multiply = multiply(img1, img2)

    # 保存图片
    cv2.imwrite("multiply.jpg", multiply)

输出结果:

相除

import cv2

def divide(image1, image2):
    """相除"""

    result = cv2.divide(image1, image2)

    cv2.imshow("add_demo", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获取相除图片
    divide = divide(img1, img2)

    # 保存图片
    cv2.imwrite("divide.jpg", divide)

输出结果:

逻辑运算

逻辑与

cv2.bitwise_and可以帮助我们实现两个图片的逻辑与.

例子:

import cv2

def logic_and(image1, image2):
    """逻辑与"""

    result = cv2.bitwise_and(image1, image2)

    # 结果展示
    cv2.imshow("result", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获取逻辑与后的图片
    logic_and = logic_and(img1, img2)

    # 保存图片
    cv2.imwrite("logic_and.jpg", logic_and)

输出结果:

逻辑或

cv2.bitwise_or可以帮助我们实现两个图片的逻辑或.

例子:

import cv2

def logic_or(image1, image2):
    """逻辑或"""

    result = cv2.bitwise_or(image1, image2)

    # 结果展示
    cv2.imshow("result", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img1 = cv2.imread("girl2.jpg")
    img2 = cv2.imread("iamarookie.jpg")

    # 获取逻辑或后的图片
    logic_or = logic_or(img1, img2)

    # 保存图片
    cv2.imwrite("logic_or.jpg", logic_or)

输出结果:

逻辑反

cv2.bitwise_not()可以帮助我们实现像素取反.

例子:

import numpy as np
import cv2

def logic_not(image):
    """逻辑非"""

    result = cv2.bitwise_not(img)

    # 合并
    result = np.hstack((img, result))

    # 结果展示
    cv2.imshow("result", result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return result

if __name__ == "__main__":
    # 读取图片
    img = cv2.imread("beautiful_girl.jpg")

    # 获取取反图片
    logic_not = logic_not(img)

    # 保存图片
    cv2.imwrite("logic_not.jpg", logic_not)

输出结果:

到此这篇关于OpenCV半小时掌握基本操作之像素加减乘除&逻辑运算的文章就介绍到这了,更多相关OpenCV像素加减乘除&逻辑运算内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 最简单的javascript对象实例代码

    function user() { this.age=21; this.name="zhangsan"; this.say=function(){ alert("hello"); } } var u = new user(); alert(u["age"]); alert(u.name); u.say(); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] JavaScript面向对象的两种书写方法以及差别http://www.jb51

  • OpenCV半小时掌握基本操作之分水岭算法

    [OpenCV]⚠️高手勿入! 半小时学会基本操作 ⚠️ 分水岭算法 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 分水岭算法 分水岭算法 (Watershed Algorithm) 是一种图像区域分割算法. 在分割的过程中, 分水岭算法会把跟临近像素间的相似性作为重要的根据. 分水岭分割流程: 读取图片 转换成灰度图 二值化 距离变换 寻找种子 生成 Marker 分水岭变换 距离变换 距离变换 (Distan

  • OpenCV半小时掌握基本操作之傅里叶变换

    目录 概述 高频 vs 低频 傅里叶变换 代码详解 输入转换 傅里叶变换 获取幅度谱 傅里叶逆变换 获取低频 获取高频 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 高频 vs 低频 高频 vs 低频: 高频: 变换剧烈的灰度分量, 例如边界 低频: 变换缓慢的灰度分量, 例如一片大海 滤波: 低通滤波器: 只保留低频, 会使得图像模糊 高通滤波器: 只保留高频, 会使得图像细节增强 傅里叶变换 傅里叶变化 (F

  • OpenCV半小时掌握基本操作之圆圈检测

    [OpenCV]⚠️高手勿入! 半小时学会基本操作 ⚠️ 圆圈检测 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 霍夫圆变换 霍夫圆变换 (Hough Circle Transform) 的原理和霍夫直线变换类似. 对于一条直线, 我们可以用参数 (r, θ) 表示, 对于圆我们需要三个参数 (x, y, r), 分别代表三个参数 x 圆心, y 圆心, r, 半径. 代码实现 因为霍夫圆检测对噪声比较敏感, 所

  • OpenCV半小时掌握基本操作之直方图

    [OpenCV]⚠️高手勿入!⚠️ 半小时学会基本操作 ⚠️ 直方图 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 20 课) 直方图 原图: cv2.calcHist()可以帮助我们统计像素并得到直方图. 格式: calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None) 参数: images: 输入图像 c

  • OpenCV半小时掌握基本操作之直线检测

    目录 概述 霍夫直线变换 原理详解 代码实战 HoughLines HoughLinesP [OpenCV] ⚠️高手勿入! 半小时学会基本操作 ⚠️ 直线检测 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 13 课) 霍夫直线变换 霍夫变换 (Hough Line Transform) 是图像处理中的一种特征提取技术. 通过平面空间到极值坐标空间的转换, 可以帮助我们实现直线检测. 如图: 原理详解 当我

  • OpenCV半小时掌握基本操作之对象测量

    目录 概述 对象测量 多边形拟合 计算对象中心 [OpenCV]⚠️高手勿入! 半小时学会基本操作 ⚠️ 对象测量 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 对象测量 对象测量可以帮助我们进行矩阵计算: 获取弧长与面积 多边形拟合 计算图片对象中心 原点距: 中心距: 图像重心坐标: 多边形拟合 步骤: 读取图片 转换成灰度图 二值化 轮廓检测 计算轮廓周长 多边形拟合 格式: cv2.approxPolyD

  • OpenCV半小时掌握基本操作之模板匹配

    目录 概述 模板匹配 案例一 案例二 [OpenCV]⚠️高手勿入! 半小时学会基本操作 ⚠️ 概述模板 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 21 课) 模板匹配 模板匹配 (Template Matching) 和卷积的原理很像. 模板在原图像上从原点开始滑动, 计算模板与图片被模板覆盖的地方的差别程度. 格式: cv2.matchTemplate(image, templ, method, r

  • OpenCV半小时掌握基本操作之图像轮廓

    目录 概述 图像轮廓 绘制轮廓 轮廓特征 轮廓近似 边界矩形 外接圆 [OpenCV]⚠️高手勿入! 半小时学会基本操作 ⚠️ 图像轮廓 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 图像轮廓 cv2.findContours可以帮助我们查找轮廓. 格式: cv2.findContours(image, mode, method, contours=None, hierarchy=None, offset=Non

  • OpenCV半小时掌握基本操作之像素加减乘除&逻辑运算

    目录 概述 加减乘除 相加 相减 相乘 相除 逻辑运算 逻辑与 逻辑或 逻辑反 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️像素加减乘除 & 逻辑运算 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 加减乘除 原图: 相加 import cv2 def add(image1, image2): """相加""" result = cv2.add(i

  • OpenCV半小时掌握基本操作之高斯双边

    目录 概述 边缘保留滤波 (EPF) 高斯双边 均值迁移 [OpenCV] ⚠️高手勿入! 半小时学会基本操作 ⚠️ 高斯双边 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天带大家用 OpenCV 来实现一个简单的磨皮. 边缘保留滤波 (EPF) 边缘保留滤波 (Edge Preserving Filter) 是图像处理的一种技术. 有别与传统滤波, EPF 会对差别较大的像素区域进行区分, 在保持边缘锐利的同时消除噪声或纹理. 高斯双边 双边滤波 (Bilat

  • OpenCV半小时掌握基本操作之边界填充

    目录 概述 边界填充 复制法 反射法 反射法 101 外包法 常量法 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️边界填充 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. 边界填充 cv2.copyMakeBorder可以帮助我们实现边界填充. 格式: cv.copyMakeBorder(img,top, bottom, left, right ,borderType) 参数: img: 需要填充的图像

  • OpenCV半小时掌握基本操作之滤波器

    目录 概述 图像平滑 均值滤波器 方框滤波 高斯滤波器 中值滤波 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️滤波器 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 9 课) 图像平滑 图像平滑 (image smoothing) 是一种区域增强算法. 可以帮助我们去除早点改善图片质量. 滤波器 (Filter) 可以帮助我们来降低噪声, 均值滤波器的主要应用是去除图像中的不相关细节. 原图: 均值

  • OpenCV半小时掌握基本操作之边缘检测

    目录 概述 Scharr 算子 Laplacian 算子 Sobel vs Scharr vs Laplacian Canny 边缘检测 高斯滤波器 梯度和方向 非极大值抑制 双阈值检测 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️ 边缘检测 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 12 课) Scharr 算子 Scharr 算子和 Sobel 算子基本一样. 只是卷积核系数不同. Sch

  • OpenCV半小时掌握基本操作之色彩空间

    目录 概述 色彩空间 色彩空间转换 视频阈值 [OpenCV]⚠️高手勿入! 半小时学会基本操作⚠️色彩空间 概述 OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界. (第 6 课) 色彩空间 色彩空间 (Color Space) 即以同的空间维度来表示某一色彩 (通常使用 3 个或者 4 个 值). 常见的色彩空间: RGB HSV HIS YCrCb YUV 色彩空间转换 原图: 代码实现: import numpy a

随机推荐