1.下载opencv-python,使用命令

pip install opencv-python=4.5.2.52

2.黑色阙值范围

lower = np.array([0,0,0])
upper = np.array([180,255,46])

3.第一种方法,识别黑色飞机直接标出中心点并且画圆
完整代码

import cv2 as cv
import numpy as npdef nothing(x):passdef morphological_operation(frame):kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))  # 获取图像结构化元素dst = cv.morphologyEx(frame, cv.MORPH_CLOSE, kernel)  # 闭操作return dstdef color_detetc(frame):hmin1 = cv.getTrackbarPos('hmin1', 'color_adjust1')hmax1 = cv.getTrackbarPos('hmax1', 'color_adjust1')smin1 = cv.getTrackbarPos('smin1', 'color_adjust1')smax1 = cv.getTrackbarPos('smax1', 'color_adjust1')vmin1 = cv.getTrackbarPos('vmin1', 'color_adjust1')vmax1 = cv.getTrackbarPos('vmax1', 'color_adjust1')hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)  # hsv 色彩空间 分割肤色lower_hsv1 = np.array([hmin1, smin1, vmin1])upper_hsv1 = np.array([hmax1, smax1, vmax1])mask1 = cv.inRange(hsv, lowerb=lower_hsv1, upperb=upper_hsv1)  # hsv 掩码ret, thresh1 = cv.threshold(mask1, 40, 255, cv.THRESH_BINARY)  # 二值化处理return thresh1def main():cv.namedWindow("color_adjust1")cv.createTrackbar("hmin1", "color_adjust1", 0, 255, nothing)cv.createTrackbar("hmax1", "color_adjust1", 180, 255, nothing)cv.createTrackbar("smin1", "color_adjust1", 0, 255, nothing)cv.createTrackbar("smax1", "color_adjust1", 255, 255, nothing)cv.createTrackbar("vmin1", "color_adjust1", 0, 255, nothing)cv.createTrackbar("vmax1", "color_adjust1", 46, 255, nothing)capture = cv.VideoCapture("2.mp4")  # 打开电脑自带摄像头,如果参数是1会打开外接摄像头while True:ret, frame = capture.read()mask1 = color_detetc(frame)scr1 = morphological_operation(mask1)contours1, heriachy1 = cv.findContours(scr1, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)  # 获取轮廓点集(坐标)cv.drawContours(frame, contours1, -1, (0, 0, 255), 2)for i, contour in enumerate(contours1):area1 = cv.contourArea(contour)if area1 > 500:print(area1)(x1, y1), radius1 = cv.minEnclosingCircle(contours1[i])x1 = int(x1)y1 = int(y1)center1 = (int(x1), int(y1))cv.circle(frame, center1, 3, (0, 0, 255), -1)  # 画出重心cv.circle(frame, center1, 100, (0, 0, 0), 3)  # 画出圆print("中心坐标:", (x1, y1))cv.putText(frame, "center:", (x1, y1), cv.FONT_HERSHEY_SIMPLEX,0.5, [255, 255, 255])# cv.imshow("mask1", mask1)cv.imshow("frame", frame)c = cv.waitKey(50)if c == 27:breakcv.waitKey(0)cv.destroyAllWindows()if __name__ == '__main__':main()

4.运行截图

5.第二种方法,识别黑色飞机直接标出中心点并且画矩形
完整代码

import cv2
import numpy as np
import imutils
from imutils import contoursdef main(video):# 颜色阈值lower = np.array([0, 0, 0])upper = np.array([180, 255, 46])# 内核kernel = np.ones((5, 5), np.uint8)# 打开摄像头vc = cv2.VideoCapture(video)if vc.isOpened():flag, frame = vc.read()frame = imutils.rotate(frame, 180)cv2.imshow("frame", frame)else:flag = Falsewhile flag:flag, frame = vc.read()# 翻转图像frame = imutils.rotate(frame, 180)draw_frame = frame.copy()if frame is None:breakif flag is True:'''下面对摄像头读取到的图像进行处理,这个步骤是比较重要的'''# 转换颜色空间HSVframe_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 颜色识别img = cv2.inRange(frame_hsv, lower, upper)# 膨胀操作dilation = cv2.dilate(img, kernel, iterations=1)# 闭操作closing = cv2.morphologyEx(dilation, cv2.MORPH_CLOSE, kernel)# 高斯滤波closing = cv2.GaussianBlur(closing, (5, 5), 0)# 边缘检测edges = cv2.Canny(closing, 10, 20)# 寻找轮廓cnts, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)# 判断轮廓数量也就是判断是否寻找到轮廓,如果没有找到轮廓就不继续进行操作if len(cnts) > 0:# 存放轮廓面积的列表s = []# 存放最大轮廓的索引max_index = 0# 获得排序后的轮廓列表以及每个轮廓对应的外接矩形(cnts, boundingRects) = contours.sort_contours(cnts)# 寻找面积最大的轮廓的索引for cnt in cnts:s.append(cv2.contourArea(cnt))max_index = s.index(max(s))# 根据面积最大轮廓的索引找到它的外接矩形的信息(x, y, w, h) = boundingRects[max_index]# 画矩形center1=(int(x + w / 2),int(y + h / 2+ 30))cv2.circle(draw_frame, center1, 3, (0, 0, 255), -1)  # 画出重心cv2.putText(draw_frame, "center:", center1, cv2.FONT_HERSHEY_SIMPLEX,0.5, [255, 255, 255])frame_out = cv2.rectangle(draw_frame, (x, y), (x + w, y + h + 60), (255, 0, 0), 2)print("中心坐标:", (x + w / 2, y + h / 2))cv2.imshow("frame", draw_frame)if cv2.waitKey(10) == 27:breakvc.release()cv2.destroyAllWindows()if __name__ == '__main__':main("2.mp4")

6.代码运行截图

7.运行速度很快,可实时检测!!!

python+opencv通过颜色阙值识别黑色飞机,并且输出中心点相关推荐

  1. Python OpenCV开发MR智能人脸识别打卡系统(一、需求分析与系统设计)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下链接 Python OpenCV开发MR智能人脸识别打卡系统(二.文件系统.数据实体模块设计) Python OpenCV开发MR智能人脸 ...

  2. Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...

  3. Python OpenCV开发MR智能人脸识别打卡系统(三、工具模块设计)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...

  4. Python OpenCV开发MR智能人脸识别打卡系统(五、程序入口设计与测试)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...

  5. opencv(c++)------图像分割(阙值、自适应阙值、grabCut、floodfill、wathershed)

    图像分割 图像分割算法分为:基于阙值的分割方法.基于边缘的分割方法.基于区域的分割方法.基于神经网络的分割方法.基于聚类的分割方法5类. 1. 基于阙值的分割方法 基于阙值的分割方法实质上是利用图像灰 ...

  6. Python OpenCV基于颜色通道分离法去除图片中的红色印章

    最近一段时间的工作都是研究如何去除图片中的红色印章,在网上查找了大量的大佬写过的方法,发现大多数是采取颜色通道分离法来做,并且效果还不错.站在前人的肩膀上,我又做了些许调整,谈不上是改进,但是能应对更 ...

  7. python+ opencv实现摄像头实时人脸识别并实现汉字标框

    opencv的puttxt()函数不能汉字输出,这也是困惑好多人都问题,经过几天的查资料,改代码终于成功实现opencv汉字输出. 第一种方法是 是通过写一段代码,能够转码,封装一下再调用,从而实现汉 ...

  8. python opencv根据颜色进行目标检测

      颜色目标检测就是根据物体的颜色快速进行目标定位.使用cv2.inRange函数设定合适的阈值,即可以选出合适的目标.   建立项目colordetect.py,代码如下: #! /usr/bin/ ...

  9. 基于python+opencv利用颜色,区分多个目标(附带详细代码)

    效果图 先上个效果图: 视频可能看不清,解释一下:就是通过hsv色彩空间将蓝色和红色同时识别出来,并且区分它们,画出标志标出坐标. 说明 本实验仅适用于基于色彩的识别与区分,比如多种颜色的小球的识别与 ...

最新文章

  1. 苹果修复iPhone漏洞突显手机安全隐忧
  2. ARKit如何将太阳系装进iPhone(二)
  3. USACO 3.2 Stringsobits(DP)
  4. Python入门100题 | 第036题
  5. erlang精要(13)-基本语法(1)
  6. 【小白学PyTorch】 2.浅谈训练集验证集和测试集
  7. PHP 标准AES加密算法类
  8. git 中文乱码配置
  9. 漫步数学分析十三——路径连通
  10. 我被产品小姐姐的笔记本深深吸引了....
  11. 将apache的htaccess转换为nginx的重写规则
  12. 创建私服maven服务
  13. 乐源机器人没电提醒吗_云迹讲解机器人,你的专属机器人服务专家
  14. 机器学习的数学基础书籍
  15. HttpUtil请求工具类
  16. 我的第一个C语言:用点阵显示出我的名字拼音首字母。
  17. 某汽车零部件制造厂商
  18. 数字孪生可视化管理平台的意义
  19. 如何复制权限受限PDF文件的内容(亲测有效,Microsoft Edge打开pdf文件)
  20. 基于java+swing的员工出差报销管理系统(java+swing+Mysql+lw)

热门文章

  1. 本地mysql拒绝jdbc连接失败_jdbc连接MySQL数据库的诡异异常 java.net.ConnectException: 拒绝连接...
  2. 【个人记录 | UNet | 整理ing】
  3. 今天遇到一个问题,就是用pycharm运行python程序,老是会出现Python.exe已停止的对话框。
  4. 去水印小程序源码【2021年8月更新】
  5. Thermal 芯片工作温度知识总结
  6. 围棋博弈程序的实现与思考(4)——棋盘的数据结构
  7. android悬浮窗口 关闭,Android悬浮窗的创建及关闭
  8. 如何甄别有价值的数据
  9. FairyGUI增益BUFF数值改变的显示
  10. 对ABAP程序调优的学习(三)并行并发读取