Python 3.6.4中OpenCV 3.4运行图像平移代码报错求助
解决OpenCV图像平移代码报错问题
先看你贴的代码,第一个致命错误是函数名拼写失误:cv2.wrapAffine 应该是 cv2.warpAffine——少了一个字母r,这是触发报错的核心原因。
除此之外,还有几个细节需要注意,帮你避免后续踩坑:
- 图片路径问题:如果
lena.jpg不在Python脚本的同一目录下,cv2.imread会返回None,此时访问image.shape[:2]会直接报错。建议要么把图片放到脚本同目录,要么写完整绝对路径,比如"C:/Users/你的用户名/Desktop/lena.jpg"(注意用正斜杠或者双反斜杠)。 - 平移量的类型优化:虽然OpenCV允许变换矩阵使用浮点数,但图像像素坐标是整数,你可以把
quarter_height和quarter_width转成整数(比如int(height/4)),这样平移结果会更符合预期。
修正后的完整代码如下:
import cv2 import numpy as np # 确保图片路径正确 image = cv2.imread("lena.jpg") # 先检查图片是否成功加载 if image is None: print("Error: 无法加载图片,请检查路径是否正确!") else: height, width = image.shape[:2] quarter_height, quarter_width = int(height/4), int(width/4) # 变换矩阵:[1,0,tx],[0,1,ty],tx是垂直平移量,ty是水平平移量 T = np.float32([[1, 0, quarter_height], [0, 1, quarter_width]]) # 修正函数名拼写错误 img_translation = cv2.warpAffine(image, T, (width, height)) cv2.imshow("Translate", img_translation) cv2.waitKey(0) cv2.destroyAllWindows()
你可以先修正函数名试试,大概率能解决当前报错。如果还是不行,先按照代码里的提示检查图片是否加载成功,逐步排查问题即可。
内容的提问来源于stack exchange,提问作者aminrivaldo
相关产品推荐
相关产品推荐

