使用OpenCV计算滑块缺口(2)
opencv
OpenCV: 开源计算机视觉库
项目地址:https://gitcode.com/gh_mirrors/opencv31/opencv
·
上一篇 openCV 计算滑块缺口,执行可能出现问题,这一篇文章,是上一版本的补充(https://blog.csdn.net/weixin_42883164/article/details/137604965)
实现计算滑块缺口的步骤:
接口部分参照上述文章,重写detect_displacement 方法:
def detect_displacement(img_slider_path, image_background_path):
"""detect displacement"""
# # 参数0是灰度模式
image = cv2.imread(img_slider_path, 0)
# print("灰度模式")
# show(image)
image_cv2 = cv2.imread(img_slider_path)
gray = cv2.cvtColor(image_cv2, cv2.COLOR_BGR2GRAY)
# print("BGR模式")
# show(gray)
# 3. 二值化处理
_, binary_image = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# print("二值化")
# show(binary_image)
# 4. 查找轮廓
contours, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 5. 在原图上绘制轮廓
image_with_contours = cv2.drawContours(image, contours, -1, (0, 255, 0), 1) # 最后一个参数是轮廓线条的厚度
# print("绘制轮廓")
# show(image_with_contours)
template = cv2.imread(image_background_path, 0)
# show(template)
#使用 matchTemplate 函数进行模板匹配
res = cv2.matchTemplate(_tran_canny(image), _tran_canny(template), cv2.TM_CCOEFF_NORMED)
# 最小值,最大值,并得到最小值, 最大值的索引
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
print(max_val)
print(max_loc)
# top_left = min_loc[0] # 横坐标
# 展示圈出来的区域
x, y = max_loc # 获取x,y位置坐标
w, h = image.shape[::-1] # 宽高
cv2.rectangle(template, (x, y), (x+w, y+h), (0, 0, 255), 2) #左上 右下 边框颜色,线条厚度
show(template)
top_left = x+w
return top_left
实现效果:


OpenCV: 开源计算机视觉库
最近提交(Master分支:4 个月前 )
1f47f5ba
imgproc: replace assertion in cornerSubPix with descriptive error #28404
Replace CV_Assert with explicit bounds check for initial corners in cornerSubPix.
This provides a descriptive runtime error instead of abrupt termination,
improving error handling for Python and C++ users.
No algorithmic or behavioral change for valid inputs.
Fixes #25139 (Related to #7276).
### Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
7 小时前
fba658b9
Improve precision of RotatedRect::points 1 天前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)