博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python_Opencv
阅读量:2049 次
发布时间:2019-04-28

本文共 4663 字,大约阅读时间需要 15 分钟。

目录

1.基于Python_Opencv识别图像轮廓

# -*- coding: utf-8 -*-#!/usr/bin/env python   #指定通过python解释代码(必须放在首行,不可少)from std_msgs.msg import Int32MultiArray    #导入python的标准字符处理库import cv2 import numpy as npimport imutilsimport time import math#打开摄像头camera=cv2.VideoCapture(0)#设定红色阈值,HSV空间             boundaries = [ ( [0, 100, 100],    #lower color range              [10, 255, 255] ) ]#upper color range while True:    ret,frame = camera.read()       #判断是否成功打开摄像头    if not ret:        print 'No Camera'        break    # resize the frame, blur it, and convert it to the HSV color space    frame = imutils.resize(frame, width=640)    # 进行高斯模糊    blurred = cv2.GaussianBlur(frame, (11, 11), 0)    #转到HSV空间    hsv=cv2.cvtColor(blurred,cv2.COLOR_BGR2HSV)     cv2.imshow("hsv", hsv)     for (lower, upper) in boundaries:        lower = np.array(lower, dtype = "uint8")         upper = np.array(upper, dtype = "uint8")             # 对图片进行二值化处理    mask = cv2.inRange(hsv, lower, upper)    #腐蚀操作    mask = cv2.erode(mask, None, iterations=2)    #膨胀操作,其实先腐蚀再膨胀的效果是开运算,去除噪点    mask = cv2.dilate(mask, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)), iterations=2)        #mask = cv2.dilate(mask, None, iterations=2)    # find contours in the mask and initialize the current    # (x, y) center of the ball    #轮廓检测    cnts= cv2.findContours(mask.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)    if imutils.is_cv2():        cnts = cnts[0]    else:        cnts = cnts[1]        center = None   #初始化轮廓质心        #如果存在轮廓    if len(cnts)>0:        #找到面积最大的轮廓        c=max(cnts,key = cv2.contourArea)        # 外接矩形,始终水平        cnt = c        x, y, w, h = cv2.boundingRect(cnt)            # x,y=图像左上方坐标, w,h=宽和高        origin_pic = cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)   # 用绿色(0, 255, 0)来画出最小的矩形框架        # 外接最小矩形        rect = cv2.minAreaRect(c)                     #rect:元组,[0]是中心坐标,[1]长宽,[2]角度        box = cv2.boxPoints(rect)        box = np.int0(box)        cv2.drawContours(frame,[box],0,(0,0,255),2)   # 用红色表示有旋转角度的矩形框架        theta = round(rect[2])        cood_x = round(rect[0][0])         cood_y = round(rect[0][1])         print"角度:%d" % theta        print"目标像素坐标:%s,%s" %rect[0]         cv2.imshow("frame", frame)         if cv2.waitKey(1) ==27 :            camera.release()             cv2.destroyAllWindows()

2.Use the OpenCV class cv::PCA to calculate the orientation of an object.

https://docs.opencv.org/3.4.3/d1/dee/tutorial_introduction_to_pca.html

3.获得RGB/HSV像素值

# -*- coding: utf-8 -*-#!/usr/bin/env python# 鼠标点击显示hsv和grb值import cv2 import numpy as npimport imutilsimport timecamera=cv2.VideoCapture(0)while True:    ret,frame = camera.read()   #ret is boolean    #判断是否成功打开摄像头    if not ret:        print 'No Camera'        break    blurred = cv2.GaussianBlur(frame, (11, 11), 0)    HSV=cv2.cvtColor(blurred,cv2.COLOR_BGR2HSV)    #鼠标点击响应事件    def getposHsv(event,x,y,flags,param):        if event==cv2.EVENT_LBUTTONDOWN:            print("HSV is",HSV[y,x])    def getposBgr(event,x,y,flags,param):        if event==cv2.EVENT_LBUTTONDOWN:            print("Bgr is",frame[y,x])    cv2.imshow("HSV", HSV)     cv2.imshow("frame", frame)     cv2.setMouseCallback("HSV",getposHsv)    cv2.setMouseCallback("frame",getposBgr)    if cv2.waitKey(1) ==27 :        camera.release()         cv2.destroyAllWindows()

OpenCV Object Tracking

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

插入链接与图片

链接: .

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted blockvar foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中

使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-
HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 :

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式.

新的甘特图功能,丰富你的文章

  • 关于 甘特图 语法,参考 ,

UML 图表

可以使用UML图表进行渲染。 . 例如下面产生的一个序列图::

这将产生一个流程图。:

  • 关于 Mermaid 语法,参考 ,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 .

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,

继续你的创作。


  1. 注脚的解释

转载地址:http://efrof.baihongyu.com/

你可能感兴趣的文章
超详细的网络抓包神器 Tcpdump 使用指南
查看>>
从 Kubernetes 资源控制到开放应用模型,控制器的进化之旅
查看>>
从此以后运维与开发过上了没羞没臊的性福生活
查看>>
教你如何优雅地魔改 Grafana 主题,太实用了!
查看>>
让我们来看看回到单体的 Istio 到底该怎么部署
查看>>
超详细的网络抓包神器 tcpdump 使用指南
查看>>
iTerm2 都不会用,还敢自称老司机?(上)
查看>>
两个奇技淫巧,将 Docker 镜像体积减小 99%
查看>>
Istio 1.5 部署指南修正版
查看>>
不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
查看>>
Kubectl exec 背后到底发生了什么?
查看>>
程序员涨薪宝典
查看>>
什么?终止一个容器竟然用了 10 秒钟,这不能忍!
查看>>
Openshift 4.4 静态 IP 离线安装系列(一):准备离线资源
查看>>
万字长文,说透了 Openshift4 的安装过程!
查看>>
Envoy 中文指南系列:Envoy 介绍
查看>>
[译] BeyondProd:云原生安全的一种新方法(Google, 2019)
查看>>
什么?VMware Fusion 也能 docker run 了?
查看>>
教你玩转微服务的装逼指南!
查看>>
Envoy 中文指南系列:Sidecar 模式
查看>>