Opencv————图像ROI和按位操作

  1. ROI操作
    ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。
    eg:roi = img2[0:rows, 0:cols]
    ROI实际上就是截取图像的一部分,然后作相应的操作。
  2. 按位操作
    bitwise_and、bitwise_or、bitwise_xor、bitwise_not这四个按位操作函数。
void bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 & src2
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 | src2
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 ^ src2
void bitwise_not(InputArray src, OutputArray dst,InputArray mask=noArray());//dst = ~src

bitwise_and是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0
bitwise_or是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
bitwise_xor是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1^ 1,1^ 0=1,0^ 1=1,0^0=0
bitwise_not是对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0, ~0=1
eg:

import cv2
import numpy as np

img1 = cv2.imread('F:\python-learn\OPENCV\mixture\James2.jpg')
img2 = cv2.imread('F:\python-learn\OPENCV\mixture\James.jpg')
img1 = cv2.resize(img1, (500, 400), interpolation=cv2.INTER_CUBIC)

rows, cols, channel = img1.shape# 行数,列数,色彩通道数
roi = img2[0:rows, 0:cols]
print(rows, cols, channel)
img1gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)# 变为灰色
ret, mask = cv2.threshold(img1gray, 150, 255, cv2.THRESH_BINARY) #第2个参数为阈值,第3个参数为最大阈值
mask_inv = cv2.bitwise_not(mask)# 去反

img1_bg = cv2.bitwise_and(roi, roi, mask=mask)
img2_fg = cv2.bitwise_and(img1, img1, mask=mask_inv)
cv2.imshow('img1_bg', img1_bg)
cv2.imshow('img2_fg', img2_fg)
dst = cv2.add(img1_bg, img2_fg)
dst = cv2.resize(dst, (500, 400), interpolation=cv2.INTER_CUBIC)
img2[0:rows, 0:cols] = dst
img2 = cv2.resize(img2, (500, 400), interpolation=cv2.INTER_CUBIC)
cv2.imshow('res', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值