Python 如何使用opencv实现图像的中心剪切

Python 如何使用opencv实现图像的中心剪切,python,opencv,image-processing,affinetransform,Python,Opencv,Image Processing,Affinetransform,使用WarpeAffine剪切图像时: M2 = np.float32([[1, 0, 0], [0.2, 1, 0]]) aff2 = cv2.warpAffine(im, M2, (W, H)) 我获得的图像没有围绕图像中心剪切。我可以在图像的一侧看到黑色三角形区域,而另一侧没有黑色区域 如何对称剪切图像?您必须调整第三列的平移参数以使图像居中。i、 你必须将一半的宽度和高度乘以一个系数 比如说 M2 = np.float32([[1, 0, 0], [0.2, 1, 0]]) M2[0,

使用WarpeAffine剪切图像时:

M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])
aff2 = cv2.warpAffine(im, M2, (W, H))
我获得的图像没有围绕图像中心剪切。我可以在图像的一侧看到黑色三角形区域,而另一侧没有黑色区域


如何对称剪切图像?

您必须调整第三列的平移参数以使图像居中。i、 你必须将一半的宽度和高度乘以一个系数

比如说

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))
之前 之后 完整代码
您必须调整第三列的平移参数以使图像居中。i、 你必须将一半的宽度和高度乘以一个系数

比如说

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))
之前 之后 完整代码
进行剪切时,需要将输出图像扩展为大于输入图像。因此,通过像素中的剪切量,使你的W或H变大。你能更具体一点吗?我如何知道剪切量及其与像素数的关系?请阅读。你做过谷歌或Stackoverflow搜索吗?我刚刚在谷歌上搜索了一张Python opencv剪切图像,发现了这个。我想这会回答你的问题。续:另见。注意剪切矩阵。获得kwidth或kheight以获得额外空间。你是如何计算你的仿射矩阵M2的?参见例子和方程。此外,我还有一个用于ImageMagick的bash shell脚本,它以像素或度数为单位进行剪切,称为“倾斜”。ImageMagick会自动展开图像,这样您就不必自己动手了。在执行剪切操作时,您需要将输出图像展开到比输入图像更大的位置。因此,通过像素中的剪切量,使你的W或H变大。你能更具体一点吗?我如何知道剪切量及其与像素数的关系?请阅读。你做过谷歌或Stackoverflow搜索吗?我刚刚在谷歌上搜索了一张Python opencv剪切图像,发现了这个。我想这会回答你的问题。续:另见。注意剪切矩阵。获得kwidth或kheight以获得额外空间。你是如何计算你的仿射矩阵M2的?参见例子和方程。此外,我还有一个用于ImageMagick的bash shell脚本,它以像素或度数为单位进行剪切,称为“倾斜”。ImageMagick会自动扩展图像,这样你就不必自己去搞乱它了。很好!感谢OpenCV和示例中的详细信息。获得视觉效果总是有帮助的。不幸的是,OP没有从中学习。这个问题的答案是一样的。我发现在这个脚本中,它应该是M2[0,2]=-M2[0,1]*H/2和M2[1,2]=-M2[1,0]*W/2,我的意思是W和H是混乱的。很好!感谢OpenCV和示例中的详细信息。获得视觉效果总是有帮助的。不幸的是,OP没有从中学习。这个问题的答案是一样的,我发现在这个脚本中应该是M2[0,2]=-M2[0,1]*H/2和M2[1,2]=-M2[1,0]*W/2,我的意思是W和H是混乱的。