OpenCV图形运算与变换
图像相加
#图的属性要一样
res = cv2.add(dog, img)
#减法要注意顺序,dog - img
res = cv2.subtract(dog, img)
res = multiply(dog, img)
divide(dog, img)
图像融合
#图片属性要一样
#alpha和beta是图片权重
#gamma 静态权重增加,一般设为0
newImg = addWeighted(A, alpha, B, bate, gamma)
图像位运算
img = np.zeros((200,200), np.uint8)
img[50:150, 50:150] = 255
非
newImg = cv2.bitwise_not(img)
与
andImg = cv2.bitwise_and(img, img2)
或
orImg = cv2.bitwise_or(img, img2)
xor
xorImg = cv2.bitwise_xor(img, img2)
>图像缩放 旋转
#缩放算法
#fx,fy缩放因素 interpolation图像插值算法
INTER_NEAREST速度快 效果差
INTER_LINEAR
INTER_CUBIC
INTER_AREA速度慢 效果好
#resize(src,dsize,fx,fy,interpolation)
cv2.resize(dog, (640,400))
cv2.resize(dog, None,fx = 0.3, fy = 0.3)
#图像翻转
cv2.flip(img, flipCode)
flipCode == 0 上下
flipCode > 0 左右
flipCode < 0 上下+左右
#图像旋转
cv2.rotate(img, rotateCode)
#90
ROTATE_90_CLOCKWISE
#180
ROTATE_180
#270
ROTATE_90_COUNTERCLOCKWISE
图像的仿射变换
图像变换的总称
#了解
warpAffine(src, M, dsize, flags, mode, value)
M:变换矩阵
dsize输出尺寸大小
mode:边界外推法标志
value:填充边界的值
#x上的平移(数组第三个)正值向下和右 负值向左上
M = np.float32([[1,0,100],[0,1,0]])
dog = cv2.imread('/D/dog.jpeg')
h,w,ch = dog.shape
new = cv2.warpAffine(dog,M,(w,h))
#实用
getRotationMatrix2D(center, angle, scale)
center 中心点
angle角度
scale缩放比例
h,w,ch = dog.shape
#shape图像大小不变
cv2.getRotaionMatrix2D((w/2,h/2),15,0.3)
new = cv2.warpAffine(dog, M,(w,h))
#三点确定变换位置
src = np.float32([[400,300],[800,300],[400,1000]])
M = cv2.getAffineTransform(src[],dst[])
new = cv2.warpAffine(dog, M,(w,h))
透视变换
#获取变换矩阵
src = np.float32([[100,1100],[2100,1100],[0,4000],[2500,3900]])
M = getPerspectiveTransform(src,dst)
warpPerspective(img,M,dsize,...)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术