cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\matmul.dispatch.cpp:550: error: (-215:Assertion failed) scn + 1 == m.cols in function 'cv::perspectiveTransform']
时间: 2023-07-06 13:40:33 浏览: 255
这个错误可能是由于`pts`的维度不正确导致的。请将其转换为形状为(N, 1, 2)的三维numpy数组,如下所示:
```python
import numpy as np
# 计算图像2在图像1中的偏移量
h, w, _ = img2.shape
pts = [[0, 0], [0, h - 1], [w - 1, h - 1], [w - 1, 0]]
pts = np.array(pts).reshape(-1, 1, 2)
pts = cv2.perspectiveTransform(pts, H)
x_offset = int(min(pts[:, 0, 0]))
y_offset = int(min(pts[:, 0, 1]))
```
这里使用`reshape`将`pts`转换为形状为(N, 1, 2)的三维numpy数组,以便与cv2.perspectiveTransform函数的参数类型匹配。
相关问题
result = cv2.addWeighted(image, 0.8, cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR), 0.2, 0) cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:650: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op' result = cv2.addWeighted(image, 0.8, cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR), 0.2, 0) cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:650: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'
这个错误提示告诉我们输入的数组尺寸不匹配。在这种情况下,`addWeighted`函数要求原始图像和边缘图像具有相同的尺寸和通道数。
请确保原始图像和边缘图像的尺寸相同。您可以使用`cv2.resize()`函数调整边缘图的尺寸,使其与原始图像保持一致。以下是修改后的代码示例:
```python
import cv2
import numpy as np
# 读取原图
original_image = cv2.imread('original_image.jpg')
# 将原图转为灰度图
gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
# 使用Canny算法进行边缘检测
edges = cv2.Canny(gray_image, 100, 200)
# 调整边缘图尺寸与原图相同
edges = cv2.resize(edges, (original_image.shape[1], original_image.shape[0]))
# 将边缘图转换为三通道
edges_bgr = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
# 将边缘图与原图叠加
result = cv2.addWeighted(original_image, 0.8, edges_bgr, 0.2, 0)
# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这样修改后,边缘图将被调整为与原始图像相同的尺寸,并且将其转换为三通道图像。然后再进行叠加操作。希望这能解决您遇到的问题。
OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:214: error: (-209:Sizes of input arguments do not match)
根据提供的引用内容,OpenCV报错信息中的`error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’`表示在`cv::cvtColor`函数中出现了断言失败的错误,原因是输入图像为空。而第二个引用中的错误信息`error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array’ (where arrays have the same size and the same number of channels), nor ‘array op scalar’, nor ‘scalar op array’ in function ‘cv::arithm_op’`表示在`cv::arithm_op`函数中出现了输入参数大小不匹配的错误。
这些错误通常是由于代码中的错误或者输入数据的问题导致的。要解决这些错误,可以尝试以下方法:
1. 对于`error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’`错误,可以检查输入图像是否为空。确保图像路径正确,图像文件存在,并且成功加载到内存中。
2. 对于`error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array’ (where arrays have the same size and the same number of channels), nor ‘array op scalar’, nor ‘scalar op array’ in function ‘cv::arithm_op’`错误,可以检查输入参数的大小是否匹配。确保输入的图像或数组具有相同的大小和通道数。
如果以上方法无法解决问题,可以尝试以下问题:
阅读全文