加载中...

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,...)
posted @   江上莲花香  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示