cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\norm.cpp:1082: error: (-215:Assertion failed) _src1.sameSize(_src2) in function 'cv::norm'
时间: 2023-07-21 10:09:30 浏览: 350
该错误通常是由于两个图像的尺寸不匹配导致的。在计算PSNR或SSIM之前,确保原始图像和生成图像具有相同的尺寸。
你可以通过使用`cv2.resize()`函数将图像调整为相同的尺寸,或者在加载图像时确保它们具有相同的尺寸来解决此问题。
以下是一个示例代码,展示了如何调整图像尺寸以匹配:
```python
import cv2
# 加载原始图像和生成图像
original_img = cv2.imread('original.jpg')
generated_img = cv2.imread('generated.jpg')
# 调整图像尺寸以匹配
original_img = cv2.resize(original_img, (generated_img.shape[1], generated_img.shape[0]))
# 继续计算PSNR和SSIM
psnr = cv2.PSNR(original_img, generated_img)
ssim = cv2.SSIM(original_img, generated_img)
# 打印结果
print("PSNR:", psnr)
print("SSIM:", ssim)
```
在上面的示例中,我们使用`cv2.resize()`函数将原始图像调整为与生成图像具有相同的宽度和高度。然后,我们继续计算PSNR和SSIM。
请确保在计算指标之前将图像调整为相同的尺寸,以避免出现尺寸不匹配的错误。根据你的具体情况进行修改和调整。
相关问题
Traceback (most recent call last): File "C:\Users\86158\PycharmProjects\pythonProject\11111111.py", line 22, in <module> kp_left, des_left = orb.compute(img_left, [cv2.KeyPoint(x[1], x[0], 5) for x in keypoints_left]) File "C:\Users\86158\PycharmProjects\pythonProject\11111111.py", line 22, in <listcomp> kp_left, des_left = orb.compute(img_left, [cv2.KeyPoint(x[1], x[0], 5) for x in keypoints_left]) cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'KeyPoint' > Overload resolution failed: > - Argument 'x' can not be safely parsed to 'float'
这个错误通常是由于关键点的坐标类型不正确引起的。你可以尝试将关键点的坐标类型从整数转换为浮点数类型,如下所示:
```python
# 选取角点
keypoints_left = np.float32([np.array([x[1], x[0]], dtype=np.float32) for x in np.argwhere(harris_left > 0.01 * harris_left.max())])
keypoints_right = np.float32([np.array([x[1], x[0]], dtype=np.float32) for x in np.argwhere(harris_right > 0.01 * harris_right.max())])
# 计算描述符
orb = cv2.ORB_create()
kp_left, des_left = orb.compute(img_left, [cv2.KeyPoint(x[0], x[1], 5) for x in keypoints_left])
kp_right, des_right = orb.compute(img_right, [cv2.KeyPoint(x[0], x[1], 5) for x in keypoints_right])
```
在这里,我们首先将角点的坐标类型转换为浮点数类型(float32),然后再使用ORB.compute函数计算描述符时,将坐标的顺序也进行了修改。
这个修改应该可以解决你遇到的问题,如果还有其他问题,请随时告诉我。
[ERROR:0@0.040] global D:\a\opencv-python\opencv-python\opencv\modules\core\src\persistence.cpp (505) cv::FileStorage::Impl::open Can't open file: 'E:\PyCh\python\ venv\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml' in read mode Traceback (most recent call last): File "E:\PyCh\python\TTTT\xym\Face recognition2.py", line 43, in <module> yangmi=ReFileName(dirPathyangmi)#调用函数 File "E:\PyCh\python\TTTT\xym\Face recognition2.py", line 32, in ReFileName face, rect = face_detect_demo(img) File "E:\PyCh\python\TTTT\xym\Face recognition2.py", line 9, in face_detect_demo faces = face_detector.detectMultiScale(gray, 1.2, 6) #使用此函数监测图像中的人脸。函数返回一个位置和大小的矩形列表,最后我们在原始图像中绘制矩形,已标记检测到人脸 cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
根据错误信息,有两个问题需要解决:
1. `Can't open file: 'E:\PyCh\python\ venv\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml' in read mode`:这个错误是由于无法以读取模式打开文件 'E:\PyCh\python\ venv\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml' 所导致的。请确保级联分类器文件存在,并且路径正确。
2. `cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'`:这个错误是由于在 `cv::CascadeClassifier::detectMultiScale` 函数中出现了断言失败的情况。可能是由于级联分类器文件未正确加载或不存在导致的。请确保级联分类器文件存在,并且路径正确。
请检查以上两个问题并进行修正。如果问题仍然存在,请提供更多的代码和错误信息,以便我更好地帮助你解决问题。
阅读全文