欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python+Opencv常用小工具集合

发布时间:2023/12/15 python 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python+Opencv常用小工具集合 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

    • 一、小工具1-URL转化为图片
    • 二、小工具2-鼠标响应
    • 参考资料
    • 注意事项

一、小工具1-URL转化为图片

1、代码实现

# coding=utf-8 # 导入python包 import numpy as np import urllib.request as ur import cv2# 方法1-使用OpenCV、NumPy和urllib def url_to_image(url):# 首先下载图像,然后将其转换为numpy数组,最后将其读取为opencv格式resp = ur.urlopen(url)image = np.asarray(bytearray(resp.read()), dtype="uint8")image = cv2.imdecode(image, cv2.IMREAD_COLOR)# 返回结果return image# 初始化URL列表 urls = ["https://www.pyimagesearch.com/wp-content/uploads/2015/01/opencv_logo.png","https://www.pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png","https://www.pyimagesearch.com/wp-content/uploads/2014/12/adrian_face_detection_sidebar.png", ]# 循环遍历所有的URL for url in urls:# 依次下载图片并展示它们print ("downloading %s" % (url))image = url_to_image(url)cv2.imshow("Image", image)cv2.waitKey(0)# 方法2-使用scikit-image from skimage import io# 循环遍历所有的URL for url in urls:print ("downloading %s" % (url))image = io.imread(url)cv2.imshow("Incorrect", image)cv2.imshow("Correct", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))cv2.waitKey(0)

2、效果展示与分析


  上图展示了方案1中使用urllib、numpy和opencv获取的图片。

二、小工具2-鼠标响应

1、代码实现

# coding=utf-8 # 导入python包 import argparse import cv2# 初始化参考点列表 refPt = [] cropping = Falsedef click_and_crop(event, x, y, flags, param):# 设置全局变量global refPt, cropping# 如果用户单击鼠标左键,则记录起始坐标(x,y)并指示正在执行裁剪if event == cv2.EVENT_LBUTTONDOWN:refPt = [(x, y)]cropping = True# 检测左键是否被释放elif event == cv2.EVENT_LBUTTONUP:# 记录终点坐标并提示裁剪成功refPt.append((x, y))cropping = False# 绘制ROI区域并进行显示cv2.rectangle(image, refPt[0], refPt[1], (0, 255, 0), 2)cv2.imshow("image", image)# 构建并解析参数 ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="Path to the image") args = vars(ap.parse_args())# 首先读取图片;然后创建一个鼠标事件 image = cv2.imread(args["image"]) clone = image.copy() cv2.namedWindow("image") cv2.setMouseCallback("image", click_and_crop)# 循环直到用户按下q键为止 while True:# 显示图片cv2.imshow("image", image)key = cv2.waitKey(1) & 0xFF# 如果用户按下r,则复位裁剪操作if key == ord("r"):image = clone.copy()# 如果用户按下q则跳出该循环elif key == ord("q"):break# 根据两个裁剪点获取ROI区域 if len(refPt) == 2:roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]cv2.imshow("ROI", roi)cv2.waitKey(0)# 关闭所有的窗口 cv2.destroyAllWindows()

2、效果展示和分析

参考资料

[1] 参考链接1
[2] 参考链接2

注意事项

[1] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注.
[2] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[3] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[4] 本文测试的图片可以通过该链接进行下载。网盘链接- 提取码:oqiv。
[5] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊!!!

总结

以上是生活随笔为你收集整理的Python+Opencv常用小工具集合的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。