Skip to content

Latest commit

 

History

History
170 lines (134 loc) · 3.76 KB

File metadata and controls

170 lines (134 loc) · 3.76 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0651
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

opencv

回忆

  • 上次研究了 两个矩阵的加法
运算法 溢出处理
直接+法 溢出后 取模
add加法 溢出后 等于255
  • BGR 三个通道混合的时候
    • 用的就是 加色混色法
  • 除了 加减运算之外
    • 图像 还有什么 运算方式吗?🤔

按位与操作

import numpy as np                                                            
import cv2    
img = cv2.imread("/mnt/cgshare/kun1.png")
print(img.shape)              
mask = np.zeros((305,483,3),np.uint8)
mask[75:118,:,:] = 255
mask[:,214:255,:] = 255
final = cv2.bitwise_and(img,mask)
cv2.imshow("img",img) 
cv2.imshow("mask",mask) 
cv2.imshow("final",final) 
cv2.waitKey()             
cv2.destroyAllWindows()
  • 效果

图片描述

按位或操作

import numpy as np    
import cv2            
                      
img = cv2.imread("/mnt/cgshare/kun1.png")
print(img.shape)      
mask = np.zeros((305,483,3),np.uint8)
mask[75:118,:,:] = 255
mask[:,214:255,:] = 255
final = cv2.bitwise_or(img,mask)                                              
cv2.imshow("img",img) 
cv2.imshow("mask",mask)
cv2.imshow("final",final)
cv2.waitKey()         
cv2.destroyAllWindows()
  • 效果

图片描述

按位异或操作

import numpy as np                                                          
import cv2    
 
img = cv2.imread("kun1.png")
print(img.shape)              
mask = np.zeros((305,483,3),np.uint8)        
mask[75:118,:,:] = 255
mask[:,214:255,:] = 255
final = cv2.bitwise_xor(img,mask)
cv2.imshow("img",img) 
cv2.imshow("mask",mask) 
cv2.imshow("final",final) 
cv2.waitKey()             
cv2.destroyAllWindows()
  • 按位 异或
    • 与黑色异或得到本身
    • 与白色异或得到反相底片

图片描述

换一个蒙版

#coding:utf-8
import cv2
import numpy as np

#读取图片
img = cv2.imread("lena.png", cv2.IMREAD_GRAYSCALE)

#获取图像宽和高
rows, cols = img.shape[:2]
print(rows, cols)

#画圆形
circle = np.zeros((rows, cols), dtype="uint8")
cv2.circle(circle, (int(rows/2), int(cols/2)), 80, 255, -1)
print(circle.shape)
print(img.size, circle.size)

#OpenCV图像异或运算
result = cv2.bitwise_xor(img, circle)

#显示图像
cv2.imshow("original", img)
cv2.imshow("circle", circle)
cv2.imshow("result", result)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 效果

图片描述

  • 还有什么运算符吗?

按位取反操作

import numpy as np
import cv2
 
img = cv2.imread("kun1.png")
print(img.shape)
mask = np.zeros((305,483,3),np.uint8)
final = cv2.bitwise_not(img)
cv2.imshow("img",img)
cv2.imshow("final",final)                                                     
cv2.waitKey()
cv2.destroyAllWindows()
  • 反相效果

图片描述

总结 🤔

  • 这次研究了 两个矩阵的加法
运算法 溢出处理
直接+法 溢出后 取模
add加法 溢出后 等于255
  • BGR 三个通道混合的时候
    • 用的就是 加色混色法
  • 除了 加减运算之外
    • 图像 还有什么 运算方式吗?🤔
  • 下次再说👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。