opencv cv.line
'''
本次来学习基于opencv进行各种画图操作,以前只习惯用matplotlib,最近开始用opencv,觉得也很好用。
cv.line(), cv.circle() , cv.rectangle(), cv.ellipse(), cv.putText()
In all the above functions, you will see some common arguments as given below:
img : The image where you want to draw the shapes
color : Color of the shape. for BGR, pass it as a tuple, eg: (255,0,0) for blue. For grayscale, just pass the scalar value.
thickness : Thickness of the line or circle etc. If -1 is passed for closed figures like circles, it will fill the shape. default thickness = 1
lineType : Type of line, whether 8-connected, anti-aliased line etc. By default, it is 8-connected. cv.LINE_AA gives anti-aliased line which looks great for curves.
'''
######################################
# cv2.line 官方的解释如下
'''
void cv::line ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0
)
Python:
cv.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) -> img
各个参数的含义如下: img Image.
pt1 First point of the line segment.
pt2 Second point of the line segment.
color Line color. BGR顺序
thickness Line thickness.
lineType Type of the line. See LineTypes.
shift Number of fractional bits in the point coordinates. '''
import cv2 as cv
# Create a black image
img = cv.imread('messi.jpg')
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),lineType = cv.LINE_AA,shift =0)
cv.imshow('img line ',img)
if cv.waitKey(0) & 0xff==ord('q'):
cv.destroyAllWindows()
##################
#rectangle 官方解读如下
'''
void cv::rectangle ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0
)
Python:
cv.rectangle( img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) -> img
cv.rectangle( img, rec, color[, thickness[, lineType[, shift]]] ) -> img img Image.
pt1 Vertex of the rectangle.
pt2 Vertex of the rectangle opposite to pt1 .
color Rectangle color or brightness (grayscale image).
thickness Thickness of lines that make up the rectangle. Negative values, like FILLED, mean that the function has to draw a filled rectangle.
lineType Type of the line. See LineTypes
shift Number of fractional bits in the point coordinates.
我喜欢首先通过C++版本的函数来看函数,因为输入输出数据类型一目了然。从参数来看,输入第一个参数是图像,第2,3个参数是坐标点,
严格来说是矩形左上角、右下角的两点,紧接着是颜色,这里也是,如果是灰度可以只有一个scalar,如果是彩色,按照BGR顺序传参。
接着的参数thickness是线的厚度,肯定是这个数越大,画出来的线越宽。然后是线的类型,可以看一下一下几种可选,其中LINE_8是默认的。
这里线的类型和我们普通意义上的是实线、虚线等这种不一样,由于我们这里画线其实是改变了image像素点的颜色,因此这里的线的类型是这个
意义,就是都是怎么改变像素点颜色的算法,具体可以参考官方文档。
LINE_4 Python: cv.LINE_4 4-connected line
LINE_8 Python: cv.LINE_8 8-connected line
LINE_AA Python: cv.LINE_AA antialiased line ''' import cv2
img = cv2.imread(r'messi.jpg')
print(img.shape)
cv2.rectangle(img, (120, 10), (240, 100), (0, 255, 0), 2)
cv2.imshow("rectangle", img)
if cv.waitKey(0) & 0xff==ord('q'):
cv.destroyAllWindows() '''
circle
void cv::circle ( InputOutputArray img,
Point center, # 圆心
int radius, # 半径
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0
)
Python:
cv.circle( img, center, radius, color[, thickness[, lineType[, shift]]] ) -> img
'''
cv2.circle(img,(80,80),30,(0,0,255),-1) cv2.imshow('img',img) if cv.waitKey(0) & 0xff==ord('q'):
cv.destroyAllWindows() '''
text
void cv::putText ( InputOutputArray img,
const String & text,
Point org,
int fontFace,
double fontScale,
Scalar color,
int thickness = 1,
int lineType = LINE_8,
bool bottomLeftOrigin = false
)
Python:
cv.putText( img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]] ) -> img '''
import time
import cv2
cap = cv2.VideoCapture(0)
while (1):
ret, img = cap.read() text = 'camera is ready.'
import random
indx = random.randint(0,len(text))
# 图片 添加的文字 位置 字体 字体 大小 字体颜色 字体粗细
cv2.putText(img, text, (5,5+indx*10 ), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
cv2.imshow("image", img)
if cv2.waitKey(0) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows() #Tips:此处注意,是两个点,但是很多数据集给的标注信息是左上角的点和宽高,所以你要转换一次。同时各个地方坐标点是整数值,这个可千万要记住,
#否则提示很多错误。其实也很好理解,这几种方法是通过改变图像像素点像素值来进行画图的,因此必须是整数。
opencv cv.line的更多相关文章
- 图像上划矩形(cv.line()函数)
在图像上划矩形 import numpy as npimport cv2 as cvimg=np.zeros((400,400),np.uint8)cv.line(img,(100,100),(350 ...
- opencv 中从cv::line和resize()函数
转自: https://blog.csdn.net/weixin_36340947/article/details/77095924 转自: https://blog.csdn.net/robinhj ...
- opencv学习笔记——cv::line函数详解
void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, ...
- OpenCV cv::Mat类
using namespace cv; 1.Mat的声明: Mat m=Mat(rows, cols, type); Mat m=Mat(Size(width,height), type); type ...
- opencv cv::imageshow 不加waitKey()不能显示图片
官方解释是highgui 没有给imshow绘制处理的时间.需要在imshow添加waitKey() waitKey()单位是ms
- opencv-6-图像绘制与opencv Line 函数剖析
opencv-6-图像绘制与opencv Line 函数剖析 opencvc++qt 开始之前 越到后面, 写的越慢, 之前还抽空去看了下 学堂在线那篇文章提供的方法, 博客第一个人评论的我, 想想还 ...
- OpenCV:直线拟合——cv::fitLine()详解
实现目的:有一系列的点,需要拟合出一条直线. cv::fitLine()的具体调用形式如下: void cv::fitLine( cv::InputArray points, // 二维点的数组或ve ...
- opencv统计二值图黑白像素个数
#include "iostream" #include "queue" #include "Windows.h" #include < ...
- [OpenCV] Image Processing - Grayscale Transform
"每个像素的输出值只取决于其输入值" 重难点:Histogram equalization 参考:笑得很甜 http://blog.csdn.net/xiaowei_cqu/art ...
随机推荐
- jdbc 12: 模糊查询
jdbc连接mysql,进行模糊查询 package com.examples.jdbc.o11_模糊查询; import com.examples.jdbc.utils.DBUtils; impor ...
- stringstrean类中关于clear和str的比较
stringstream类涉及到多次类型转换的时候容易出现异常错误 因为第一次数据如果读入eof或者输出完整来到eof,此时stringstream会自动为其添上eofbit标志位,此时继续进行任何操 ...
- 题解 P1999【覆盖墙壁】
数学题 令 \(A_n\) 为 \(2\times n\) 的墙壁放满块的方案数,考虑递推. 显然 \(A_0=1\),我们令对于 \(k<0\),\(A_k=0\) . 放直线型的块非常好递推 ...
- 手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
七夕来咯!又到了给重要的人送惊喜的时刻. 今年,除了将心意融入花和礼物,作为程序员,用自己的代码本事手搓一个技术感十足"七夕限定"惊喜,我觉得,这是不亚于车马慢时代手写信的古典主义 ...
- playwright录制脚本
我喜欢Playwright! 这是微软开源的一款非常强大的自动化工具,再过几年,他很有可能取代Selenium在浏览器自动化的通知地位.使用过一段时间,我没有找到很好的中文资料可以参考,导致很多问题无 ...
- MySQL金融应用场景下跨数据中心的MGR架构方案(2)
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 如何在多个数据中心部署多套MGR集群,并实现故障快速切换. 上篇文章介绍了如何在多数据中心部署多套MGR集群,并构建集群间 ...
- 用 Antlr 重构脚本解释器
前言 在上一个版本实现的脚本解释器 GScript 中实现了基本的四则运算以及 AST 的生成. 当我准备再新增一个 % 取模的运算符时,会发现工作很繁琐而且几乎都是重复的:主要是两步: 需要在词法解 ...
- 我在Apache DolphinScheduler的心路历练
摘要:Apache DolphinScheduler 目前是 Apache 孵化项目,目前正在快速发展中.加入Apache DolphinScheduler社区已一年多,已有 400+ 公司在生产上使 ...
- 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 前言 ...
- 浅谈MySQL的sql_mode
SQL mode 今天我们来分享一下MySQL的SQL mode , 这也是我们比较容易忽略的一点,我们在一开始安装数据库的时候其实就要先考虑要保留哪些SQL mode,去除哪些,合理的配置能够减少很 ...