图像处理笔记(3)----OpenCV图像算术运算
时间:2022-07-24
本文章向大家介绍图像处理笔记(3)----OpenCV图像算术运算,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我想把OpenCV的标志放到另一幅图像上,如果使用相加add函数,颜色会改变,使用addWeighted函数会得到透明效果,怎么做呢?
import cv2 as cv
# import numpy as np
img1 = cv.imread('C:\Users\dragon\Pictures\Camera Roll\ali.jpg')
img2 = cv.imread('C:\Users\dragon\Pictures\Camera Roll\OpenCV_logo.png')
rows,cols,channels = img2.shape#获取img2图像的长、宽和RGB通道数
roi = img1[0:rows, 0:cols]#在img1中截取和img2同样像素大小的图像
cv.imshow('roi',roi)
img2gray = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)#获取img2的灰度图
ret, mask = cv.threshold(img2gray, 175, 255, cv.THRESH_BINARY)
# 图像二值化
# 第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:
# • cv2.THRESH_BINARY(黑白二值)
# • cv2.THRESH_BINARY_INV(黑白二值反转)
# • cv2.THRESH_TRUNC (得到的图像为多像素值)
# • cv2.THRESH_TOZERO
# • cv2.THRESH_TOZERO_INV
mask_inv = cv.bitwise_not(mask)#将黑白颜色反转
cv.imshow('mask', mask)
cv.imshow('mask_inv', mask_inv)
img1_bg = cv.bitwise_and(roi, roi, mask = mask_inv)
#图像按位与操作,只有mask_inv[i]不等于0时,才会进行"and"运算
cv.imshow('img1_bg', img1_bg)
img2_fg = cv.bitwise_and(img2, img2, mask = mask)
cv.imshow('img2_fg', img2_fg)
dst = cv.add(img1_bg, img2_fg)
img1[0:rows, 0:cols] = dst
cv.imshow('res', img1)
cv.waitKey(0)
cv.destroyAllWindows()
代码如上,我把过程中的图像截图出来,这样会更好理解 ali.jpg原图:
OpenCV_logo.png原图:
运算后的图:
运算中间的图,图片框的标题对应程序中的图:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中安装Composer的步骤分享
- Linux md5sum命令的使用方法
- linux文件管理命令实例分析【显示、查看、统计等】
- linux用户和组命令实例分析【切换、添加用户、权限控制等】
- Linux中Bash环境变量的配置方法
- Linux 中的防火墙 ufw 简介
- linux下如何实现快速拷贝大文件
- Linux硬链接与软链接原理及用法解析
- Linux通用java程序启动脚本代码实例
- 如何解决Ubuntu18.04循环登录/卡在开机界面/无法进入图形界面的问题
- CentOS7连接XShell与网络配置的方法
- 如何监控 Linux 服务器状态的方法
- Linux 文件系统的操作实现
- win10系统下安装superset的步骤
- Ubuntu下使用python3中的venv创建虚拟环境