opencv - OpenCv 无法在我的许多图像上找到棋盘图案,而 Matlab 没有
问题描述
我正在使用 OpenCv 进行 GoPro 相机校准。但是 findChessboardCorners 在我的许多图像上返回 false 而 Matlab 没有。我试图对图像进行二进制处理以帮助 OpenCv,但它仅在某些情况下有帮助。这是示例:
这是代码:
CHECKERBOARD = (6,9)
img = cv2.imread('1.JPG')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)
print(ret)
我尝试过不同的标志。OpenCv 失败,matlab 没有。有什么提示吗?
解决方案
调整图像大小似乎有效。
代码示例:
import cv2
import numpy as np
CHECKERBOARD = (6,9)
img = cv2.imread("Q2l11.jpg")
img = cv2.resize(img,(int(400),int(400)))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)
print(corners)
#print(ret)
corners = np.int0(corners)
for i in corners:
x,y = i.ravel()
cv2.circle(img,(x,y),3,(0,0,255),-1)
cv2.imshow('Corners',img)
cv2.waitKey(0)
推荐阅读
- javascript - 请有人解释一下下面提到的功能之间的区别
- javascript - 商店无法识别调度员的删除操作
- spring - 尝试显示.jsp时出现Spring MVC tomcat常量404错误
- python - 在numpy中对点数组进行排序
- c# - C#(将 DataSet 转换为多个 CSV 字符串,保留类型并转换回来)
- java - 创建后将jbutton添加到jpanel
- python - 读取 Celery 提交的 Redis 消息
- r - ggplot2,排列多个图,大小都一样,中间没有间隙
- asp.net-core - 为什么 CORS 会阻止 .NetCore 中的角度请求
- ios - 防止子视图被导航栏隐藏