python - 如何使用opencv实现居中剪切图像
问题描述
当我使用 warpAffine 剪切图像时:
M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])
aff2 = cv2.warpAffine(im, M2, (W, H))
我获得了在图像中心周围没有剪切的图像。我可以在图像的一侧看到黑色三角形区域,而另一侧没有黑色区域。
我怎样才能让图像被对称剪切?
解决方案
您必须调整翻译参数(第 3 列)以使图像居中。即你必须翻译一半的宽度和高度乘以一个因子。
例如
M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])
M2[0,2] = -M2[0,1] * W/2
M2[1,2] = -M2[1,0] * H/2
aff2 = cv2.warpAffine(im, M2, (W, H))
前
后
完整代码
import cv2
import numpy as np
import matplotlib.pyplot as plt
im = np.ones((100,100))
H, W = im.shape
M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])
M2[0,2] = -M2[0,1] * W/2
M2[1,2] = -M2[1,0] * H/2
aff2 = cv2.warpAffine(im, M2, (W, H))
plt.imshow(aff2, cmap="gray")
推荐阅读
- vue.js - 在“测试套件未能运行找不到模块'@vue/compiler-sfc'”上运行开玩笑测试错误时
- html - 如何在此按钮代码上从右到左更改波纹效果
- metpy - 开始了解有关 NDFD 预测的更多背景的最佳地点?
- java - “价值
所以我使用的是 Android Studio (Java),我必须与使用 Apache (xampp) 制作的网站进行通信。我放入了一个 json 对象 3 个变量。其中两个是字符串,另一个是我使用网站上的代码制作的签名 -
- java - BindingGenerator - 构建时出现语法错误
- python - (Python) For 循环会影响数组的所有子数组,尽管只引用了第一个子数组 - 如何避免这种情况
- c - 打印到文本文件但文件仍然为空
- spring-kafka - Spring Cloud Stream with Kafka Binder:/bindings Actuator API 不会停止生产者
- docker - 在 docker 容器中运行时 Nodemailer 连接超时
- amazon-s3 - 尝试在 AWS S3 上使用客户端 API 初始化 Datomic Cloud 时出现“无法读取密钥文件”错误