首页 > 其他分享 >w15-小工具

w15-小工具

时间:2023-06-05 17:36:23浏览次数:37  
标签:iy ix img w15 图像 工具 轮廓 cv

w15-小工具

功能

​ 该工具可以完成检测图像中鼠标点击位置像素点的rgb值或者hsv值等的颜色像素值,并能够用鼠标在图像中画出一个封闭的轮廓,可以求出轮廓的面积和周长要求将结果显示在控制台或者图像上合适的位置(将结果显示在图像上时注意调整字体和大小合适)。

思路

​ 由于opencv貌似没有可以直接绘制曲线的函数,所以我采用了化曲为直的思想,使用若干段直线拼接而成。在具体实现的过程中,我只需要记录当前时刻的鼠标坐标点(x, y),并保存上一次访问的点(ix, iy),最后一个点同第一个点连接成一个闭合的轮廓即可。

​ 在识别轮廓方面,我先描述一下我的一个错误的做法:我在起初绘制完封闭轮廓后,想要通过先转灰度->简单阈值处理,使得图像二值化,进而提取轮廓。但是我疏忽了我起初的图像不是二值图像,在简单阈值处理之后会出现轮廓直接缺了一半的情况,所以我尝试通过自适应阈值的方法进行处理。这次的想法不错,效果也不错,从thresh图像可以基本地看出完整的轮廓,但是家人们,我尝试了用contourAreaarcLength函数对轮廓contours[0]进行计算,结果两个输出均为0,这让我进一步陷入思考。经过分析,我觉得可能是findcontours函数识别到了其他的轮廓,比如人脸等,所以我输出了contours的长度,171这个数字也验证的我的想法是正确的。所以我不得不再次思考识别轮廓的想法。终于,我想到了可以直接创建另外一个二值化的图像,用白色的线条在上面和图像一样同步绘制就行,然后从这里识别并计算出响应的周长和面积,进行输出即可。

实验代码

import cv2 as cv
import numpy as np
ix, iy = -1, -1
sx, sy = -1, -1


def test(event, x, y, flags, param):
    global drawing, ix, iy, sx, sy, click, img
    hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)

    if event == cv.EVENT_LBUTTONDOWN:
        ix, iy = x, y
        sx, sy = x, y
        click = True
        drawing = True

    elif event == cv.EVENT_MOUSEMOVE:
        if drawing:
            cv.line(img, (ix, iy), (x, y), (0, 255, 0), 2, cv.LINE_AA)
            cv.line(background, (ix, iy), (x, y), 255, 2)
            ix = x
            iy = y

    elif event == cv.EVENT_LBUTTONUP:
        if click:
            print("BGR[{},{}]: {}".format(ix, iy, img[ix, iy]))
            print("HSV[{},{}]: {}".format(ix, iy, hsv[ix, iy]))
            print()
            click = False
        drawing = False
        cv.line(img, (sx, sy), (ix, iy), (0, 255, 0), 2, cv.LINE_AA)
        cv.line(background, (sx, sy), (ix, iy), 255, 2)

        contours, hierarchy = cv.findContours(background, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

        area = cv.contourArea(contours[0], False)
        perimeter = cv.arcLength(contours[0], True)

        print("area: {}".format(area))
        print("perimeter: {}\n".format(perimeter))
        # 在画布上绘制结果
        cv.putText(img, "Area: {:.2f}".format(area), (10, 30), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
        cv.putText(img, "Perimeter: {:.2f}".format(perimeter), (10, 60), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)


# 创建一个窗口和图像,然后将回调函数与窗口绑定
img = cv.imread('iu.jpg')
img = cv.resize(img, None, fx=0.5, fy=0.5, interpolation=cv.INTER_CUBIC)
cv.namedWindow('iu')
cv.namedWindow('thresh')
cv.setMouseCallback('iu', test)
cv.setMouseCallback('thresh', test)

drawing = False  # 是否正在绘制
click = False  # 是否进行了点击
rows, cols, channels = img.shape
background = np.zeros((rows, cols), np.uint8)

while True:
    cv.imshow('iu', img)
    cv.imshow('thresh', background)
    k = cv.waitKey(1) & 0xFF
    if k == 27:  # 按下ESC键退出
        break

cv.destroyAllWindows()

​ 结果会在控制台和图像中打印。

实验效果

标签:iy,ix,img,w15,图像,工具,轮廓,cv
From: https://www.cnblogs.com/chickchick/p/17458483.html

相关文章

  • esxi驱动添加工具
    参考连接:https://blog.csdn.net/JENREY/article/details/1057745421.下载路径:http://vibsdepot.v-front.de/tools/ESXi-Customizer-v2.7.2.exe2.处理1.确认网卡型号 2.下载驱动 3.编辑工具,此工具最后版本为到2015年定制,win10不能直接使用双击运行,生成一个同名目录......
  • 京东数据分析软件工具(京东618销量查询)
    这一期,我们主要分享今年618京东美妆个护类的预售数据,包括面部护肤、香水彩妆、男士面部护肤品类。-面部护肤-今年618,面部护肤品类在京东累计预售量达到130万件,预售额达到13亿元。预售期间,护肤品类均价在1010元左右。期间,约有381个热销品牌和500家热销店铺,是今年预售期间涉及品牌和......
  • Web安全测试—工具安装之Firefox插件
    Firefox网页浏览器具有可扩展的附加组件架构,是可用于Web应用安全测试的最佳浏览器。https://www.mozilla.org/en-US/firefox/即使应用本身不是专门为Firefox兼容性而编写的,只要在使用Firefox时,不会彻底破坏功能的实现,仍然可以使用Firefox来测试运行在后台,与安全有关的内......
  • Leangoo领歌Scrum工具实施多团队规模化敏捷Scrum of Scrums
    ​多团队大规模敏捷的场景定义:多个敏捷团队开发同一个大型产品,几十人,甚至几百人开发一个产品或解决方案。在Leangoo领歌中创建多团队大规模敏捷项目:多团队规模化敏捷的项目结构: 在Leangoo企业中创建项目,项目类型选择“敏捷开发”,项目模板选择“多团队大规模敏捷开发”。创......
  • GCC常用工具及其命令行
       ......
  • 【IDE】IntelliJ IDEA 插件之Alibaba Java Coding Guidelines - 阿里巴巴Java代码检测
    一、安装进入插件安装界面|-File |-Settings |-Plugins输入alibabainstallAlibabaJavaCodingGuidelines重启IDEA,开始使用二、使用编码规范扫描该插件在扫描代码后,将不符合《java开发手册》的代码按Blocker/Critical/Major三个等级进行显示在Snoar中对代码规则有五......
  • Jwt生成和解析工具类(万用版,可作为数据存储容器来传输)
    packagecom.ciih.authcenter.client.util.jwt;importcom.alibaba.fastjson.JSON;importcom.auth0.jwt.JWT;importcom.auth0.jwt.JWTCreator;importcom.auth0.jwt.JWTVerifier;importcom.auth0.jwt.algorithms.Algorithm;importcom.auth0.jwt.interfaces.Claim;......
  • Java集合List转树结构工具类-函数版
    工具类:packagecom.example.mindsa.util.tree;importcom.baomidou.mybatisplus.core.toolkit.support.SFunction;importlombok.SneakyThrows;importjava.lang.invoke.SerializedLambda;importjava.lang.reflect.Method;importjava.util.List;importjava.util.func......
  • Permute 3 Mac(万能格式转换工具) v3.10.2中文版
    Permute3Mac是一款功能强大的万能格式转换工具,专为macOS系统设计。它可以帮助用户轻松、快速地将音频、视频和图像文件转换成各种格式,以满足用户不同的需求。→→↓↓载Permute3MacPermute3Mac支持多种文件格式的导入和输出,包括MP4、MOV、MKV、AVI、FLAC、MP3、PNG......
  • BI软件是什么?应用BI工具能给企业带来什么
    BI软件是指利用数据挖掘、分析和可视化等技术,将企业内部和外部数据转化为有价值的信息和洞察,以帮助企业支持业务决策和优化业务流程的工具和应用程序。常见的BI软件包括Datainside、QlikView、PowerBI、SAPBusinessObjects、IBMCognos等。应用BI工具可以给企业带来以下几个方......