• halcon学习和实践(颜色筛选)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            图像处理中,颜色是一个很重要的属性。很多同学都以为颜色只有红、橙、黄、绿、青、蓝、紫这几种颜色。事实上并不是这样的。如果我们以红、蓝、绿为基色,其他颜色都是以这三种颜色为基础搭配而成的话,那么颜色的种类应该有256 * 256* 256这么多。这就是为什么,很多知名的消费品每一次在产品发布会的时候都要精心挑选几种颜色供大家挑选。

            那么,作为图像处理来说,如果要识别筛选某种颜色的话,是不是直接从r、g、b里面筛选一个范围就可以实现这个目标呢?这样其实是可以的,但是不准确。一种更好的办法是先将图像从rgb转化为h、s、v。这里的h是色度,s是饱和度,v是亮度。如果需要挑选一个颜色的话,那么选择对应的h、s、v范围即可。

            还记得在大学本科论文设计的时候,当时的论文题目叫彩色图像的增强显示。那个时候只是知道r、g、b,并不知道h、s、v,所以就在rgb通道上面做了各种增强方法,比如说直方图均衡等等,虽然也有一定的效果,但是那个效果真是惨不忍睹。

            hsv本身是为了提取特定的区域范围,这部分相当于代替了算子运算、二值化运算,后期的区域分割、属性过滤、ocr识别、发送命令,这部分还是一样,和之前的流程没有什么差别。下面说说应该怎么做一个颜色提取,首先需要明确颜色范围,大家可以参考这篇blog,地址在这,https://blog.csdn.net/zhangdongren/article/details/98941445

            接着就可以自己写一个python+opencv的代码来进行处理,比如像这样,原来代码的地址在这,https://www.cnblogs.com/puheng/p/9228473.html

    1. import cv2
    2. import numpy as np
    3. lower_blue=np.array([110,50,50])
    4. upper_blue=np.array([130,255,255])
    5. img1=cv2.imread("car.png")
    6. xsize,ysize,channel=img1.shape
    7. img1=cv2.resize(img1,(ysize,xsize))
    8. frame=cv2.cvtColor(img1,cv2.COLOR_BGR2HSV)
    9. mask_blue=cv2.inRange(frame,lower_blue,upper_blue)
    10. res_blue=cv2.bitwise_and(frame,frame,mask=mask_blue)
    11. res_blue=cv2.cvtColor(res_blue,cv2.COLOR_HSV2BGR)
    12. cv2.imshow("mask_blue",mask_blue)
    13. cv2.imshow("res_blue",res_blue)
    14. cv2.waitKey(0)
    15. cv2.destroyAllWindows()

            先准备一个有蓝色车牌的图片,命名为car.png,比如像这样

             直接输入python执行语句,比如说python demo.py,不出意外就可以得到这样的结果,

             这样,通过一个颜色,就可以比较容易的将需要的物体从图像中识别出来了。

  • 相关阅读:
    软考系统架构师常考知识点整理(含案例分析、论文历年题目总结)
    双向链表的查找、插入和删除
    DRF JWT认证(二)
    玩转gpgpu-sim 04记—— __cudaRegisterBinary() of gpgpu-sim 到底做了什么
    快速体验 Flink Table Store 入门篇
    SAP-MM-查找采购订单的创建和修改日期
    1.4.14 实验14:ospf多区域
    .NET下 支持大小写不敏感的JSON Schema验证方法
    docker安装MySQL 5.7
    [附源码]Python计算机毕业设计SSM焦作旅游网站(程序+LW)
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/126717169