【OpenCV】(二)OpenCV基础知识和绘制图形

二.OpenCV基础知识和绘制图形 2. OpenCV基础知识和绘制图形 ###2.1 OpenCV的色彩空间 2.1.1 RGB和BGR 最常见的色彩空间就是RGB, 人眼也是基于RGB的色彩空间去分辨 颜色的. OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同. 显示图片的时候需要注意适配图片的色彩空间和显示环境的色彩空间.比如传入的图片是BGR色彩空间, 显示环境是RBG空间, 就会出现颜色混乱的情况. 2.1. 2 HSV, HSL和YUV 2.1.2.1 HSV OpenCV用的 阅读详情

系列内容:OpenCV概述与环境配置,OpenCV基础知识和绘制图形,图像的算数与位运算,图像视频的加载和显示,图像基本变换,滤波器,形态学,图像轮廓,图像直方图,车辆统计项目,特征检测和匹配,图像查找和拼接,虚拟计算器项目,信用卡识别项目,图像的分割与修复,人脸检测与车牌识别,目标追踪,答题卡识别判卷与文档ocr扫描识别,光流估计

(一)OpenCV的色彩空间

1.RGB和BGR

最常见的色彩空间就是RGB,人眼也是按照RGB色彩空间分别颜色OpenCV默认使用BGR,BGR与RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同RGB

(1)RGB

RGB如图2.1所示:

2.1-RGB

(2)BGR

BGR如图2.2所示:

2.2-BGR

2.HSV,HSL和YUV

(1)HSV(HSB)

OpenCV使用最多的色彩空间,如图2.3所示:

2.3-HSV(HSB)
  1. Hue:色相,圆盘,0°红,120°黄,240°蓝
  2. Saturation:饱和度,饱和度越高,颜色越鲜艳
  3. Value(Brighteness):明度,颜色明亮程度,取值为0\%(黑)-100\%(白)

使用原因:便于图像处理,如根据Vue值来判断背景颜色

(2)HSL

概述:

HSL和HSV差不多

  1. Hue:色相
  2. Saturation:饱和度
  3. Lightness:亮度

HSL和HSV对比,如图2.4所示:

2.4-HSL和HSV对比

(3)YUV

概述:

YUV是一种颜色编码方式,常使用在各个视频处理组件中.

  1. Y表示明亮度(Luma)
  2. U和V表示色度(Chroma)

优势:占用少量的带宽

4:4:4表示完全取样

(4)例子

待处理的图片,如图2.5所示:

2.5-待处理的图片

读取图片:

import cv2  # 导入OpenCV库

# 读取图片文件
dog = cv2.imread('./dog.jpg')  

# 显示图片,窗口名称为'dog'
cv2.imshow('dog', dog)  

# 等待用户按键,参数0表示无限等待
cv2.waitKey(0)  

# 销毁所有OpenCV窗口
cv2.destroyAllWindows()

矩阵表示,如图2.6所示:

2.6-矩阵表示

选取前两个矩阵,把各列相加,接着比较不重复的颜色值的和,如图2.7所示:

2.7-比较不重复的颜色值的和

3.色彩空间转换

代码:

import cv2

def callback(value):
    pass

cv2.namedWindow('color', cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse', 640, 480)

img = cv2.imread('./dog.jpg')

# 颜色空间转换表以COLOR开头
# 读取照片,默认读入照片为BGR
# 常见的颜色空间转换 2=to
colorspaces = [
    cv2.COLOR_BGR2RGBA, cv2.COLOR_BGR2BGRA,
    cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2HSV,
    cv2.COLOR_BGR2YUV
]

# 设置拖动条,4个格子
cv2.createTrackbar('curcolor', 'color', 0, 4, callback)

while True:
    # 获取拖动条的值
    index = cv2.getTrackbarPos('curcolor', 'color')

    # 颜色空间转换API:
    cvt_img = cv2.cvtColor(img, colorspaces[index])

    cv2.imshow('color', cvt_img)
    key = cv2.waitKey(10)
    if key & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

BGR,如图2.8所示:

2.8-BGR

RGB,如图2.9所示:

2.9-RGB

GRAY,如图2.10所示:

2.10-GRAY

HSV,如图2.11所示:

2.11-HSV

YUV,如图2.12所示:

2.12-YUV

(二)OpenCV的重要数据结构--Mat

1.Mat介绍

(1)不同语言中的mat:

opencv用mat这种数据结构来表示图片的

C++是用mat来保存图片的,python中把mat转化成了numpy的ndarray

mat的结构,如图2.13所示:

2.13-mat的结构

C++定义,如图2.14所示:

2.14-mat的结构的C++定义

Mat属性,如图2.15所示:

2.15Mat属性

(2)ndarray的四种常见属性:

属性:

  1. img.data;
  2. img.size;
  3. img.dtype;
  4. img.shape;
  5. img.ndim;

示例(1)如图2.16所示:

2.16-Mat属性示例(1)

示例(2)如图2.17所示:

2.17-Mat属性示例(2)

2. Mat拷贝

(1)Mat共享数据

Mat共享数据,如图2.18所示:

2.18-Mat共享数据

(2)Mat的拷贝

使用numpy提供的深浅拷贝方法即可实现Mat的拷贝:

import cv2
import numpy as np

img = cv2.imread('./dog.jpg')

# 浅拷贝
img2 = img.view()

# 深拷贝
img3 = img.copy()

img[10:100, 10:100] = [0, 0, 255]

cv2.imshow('img', img)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)

cv2.waitKey(0)
cv2.destroyAllWindows()

或者,利用hstack函数堆叠起来对比:

import cv2
import numpy as np

img = cv2.imread('./dog.jpg')

# 浅拷贝
img2 = img.view()

# 深拷贝
img3 = img.copy()

img[10:100, 10:100] = [0, 0, 255]

cv2.imshow('img', np.hstack((img, img2, img3)))

cv2.waitKey(0)
cv2.destroyAllWindows()

浅拷贝与深拷贝结果,如图2.19所示:

2.19-浅拷贝与深拷贝结果

3.访问图像(Mat)的属性

OpenCV中的Mat在python中已经转化为ndarray,通过ndarray的属性即可访问Mate图像的属性

import cv2
import numpy as np

# 读取图片
img = cv2.imread('./dog.jpg')

# 浅拷贝
img2 = img.view()

# 深拷贝
img3 = img.copy()

# 修改原图的部分区域
img[10:100, 10:100] = [0, 0, 255]

# 水平堆叠原图、浅拷贝和深拷贝的图像并显示
cv2.imshow('img', np.hstack((img, img2, img3)))

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

4.通道的分离与合并

主要方法:

split(mat)分割图像的通道,merge((ch1,ch2,ch3))融合多个通道

(1)将图片b,g分割后融合

import cv2
import numpy as np

# 创建一个全黑的图像,大小为400x640,3通道,数据类型为np.uint8
img = np.zeros((400, 640, 3), np.uint8)

# 将图像分割成蓝、绿、红三个通道
b, g, r = cv2.split(img)

# 修改蓝色和绿色通道的部分区域为255(白色)
b[10:100, 10:100] = 255
g[10:100, 10:100] = 255

# 合并通道
img2 = cv2.merge((b, g, r))

# 显示原图和各个通道以及合并后的图像
cv2.imshow('img', img)
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('img2', img2)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

将图片b,g分割后融合结果,如图2.20所示:

2.20-将图片b,g分割后融合结果

(2)将img和img2水平放置在一起对比:

import cv2
import numpy as np

# 创建一个全黑的图像,大小为400x640,3通道,数据类型为np.uint8
img = np.zeros((400, 640, 3), np.uint8)

# 将图像分割成蓝、绿、红三个通道
b, g, r = cv2.split(img)

# 打印蓝色通道(初始全0)
print('b', b)

# 修改蓝色和绿色通道的部分区域为255(白色)
b[10:100, 10:100] = 255
g[10:100, 10:100] = 255

# 合并通道
img2 = cv2.merge((b, g, r))

# 显示原图(蓝色和绿色通道水平堆叠)和修改后的图像(原图和合并后的图像水平堆叠)
cv2.imshow('img', np.hstack((b, g)))
cv2.imshow('img2', np.hstack((img, img2)))

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

将img和img2水平放置在一起对比,如图2.21所示:

2.21-将img和img2水平放置在一起对比

(三)绘制图形

利用OpenCV提供的绘制图形API可以绘制直线,矩形,圆,椭圆等图形:

1.直线

line(img,pt1,pt2,color,thickness,lineType,shift)画直线

参数说明

  • 1.img:在哪个图像上画直线
  • 2. pt1,pt2:开始点,结束点指定线的开始和结束位置
  • 3. color:颜色
  • 4. thickness:线宽
  • 5. lineType:线型,线形为-1,4,8,16,默认为8
  • 6. shift:坐标缩放比例

绘制直线示例:

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((480, 640, 3), np.uint8)

# 绘制两条直线
cv2.line(img, (10, 20), (300, 400), (0, 0, 255), 5, 4)
cv2.line(img, (180, 100), (480, 580), (0, 0, 255), 5, 16)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制直线,如图2.22所示:

2.22-绘制直线

2.矩形

rectangle(img,pt1,pt2,color,thickness,lineType,shift)画矩形

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((480, 640, 3), np.uint8)

# 绘制矩形
cv2.rectangle(img, (80, 100), (380, 380), (0, 255, 0), 5)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

画矩形,如图2.23所示:

2.23-画矩形

3.圆

circle(img,center,radius,color[,thickness[,lineType[,shift]]])中括号内参数表示可选参数,画圆

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((480, 640, 3), np.uint8)

# 画圆
cv2.circle(img, (320, 240), 50, (0, 0, 255), 5)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

画圆,如图2.24所示:

2.24-画圆

4.椭圆

ellipse(img,中心点,长宽的一半,角度,从哪个角度出发,从哪个角度结束....),画椭圆

(1)正椭圆

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((480, 640, 3), np.uint8)

# 画椭圆
cv2.ellipse(img, (320, 240), (100, 50), 0, 0, 360, (0, 0, 255), 5)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

画正椭圆,如图2.25所示:

2.25-画正椭圆

(2)倾斜15度椭圆

cv2.ellipse(img,(320,240),(100,50),15,0,360,[0,0,255],5,16)

画倾斜15度椭圆,如图2.26所示:

2.26-画倾斜15度椭圆

(3)画半椭圆(0-180度)

cv2.ellipse(img,(320,240),(100,50),15,0,180,[0,0,255],5,16)

如图2.27所示:

2.27-画半椭圆(0-180度)

5.多边形

polylines(img,[pts],isClosed,color[thinckness[,lineType[,shift]])画多边形

(1)闭合多边形

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((400, 600, 3), np.uint8)

# 绘制多边形
# pts多边形的点集, 必须是int32位
pts = np.array([[250, 100], [150, 300], [50, 280]], np.int32)
# 注意pts是三维的(这里实际是二维点集,在OpenCV中polylines要求点集为三维数组,最后一个维度是点坐标,可理解为形状为(1, n, 2) )
# 更准确的写法如下(将点集reshape为(1, -1, 2) ):
pts = pts.reshape((-1, 1, 2))  
# 或者在创建时就写成三维形式,如:pts = np.array([[[250, 100]], [[150, 300]], [[50, 280]]], np.int32) 
# 下面按照正确形式绘制
cv2.polylines(img, [pts], True, (0, 0, 255), 5)

# 另一种常见正确写法,直接定义三维点集
# pts = np.array([[[250, 100], [150, 300], [50, 280]]], np.int32)
# cv2.polylines(img, pts, True, (0, 0, 255), 5)

cv2.imshow('draw', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

画闭合多边形,如图2.28所示:

2.28-画闭合多边形

(2)不闭合多边形

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((400, 600, 3), np.uint8)

# 绘制多边形(非闭合)
pts = np.array([[250, 100], [150, 300], [50, 280]], np.int32)
# OpenCV 的 polylines 函数要求点集为特定三维格式,这里调整点集格式
pts = pts.reshape((-1, 1, 2))  
cv2.polylines(img, [pts], False, (0, 0, 255), 5)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

画不闭合多边形,如图2.29所示:

2.29-画不闭合多边形

(3)fillPoly填充多边形

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((400, 600, 3), np.uint8)

# 定义多边形的顶点坐标
pts = np.array([[250, 100], [150, 300], [50, 280]], np.int32)
# 调整点集格式为OpenCV要求的三维格式 (n, 1, 2)
pts = pts.reshape((-1, 1, 2))  

# 填充多边形
cv2.fillPoly(img, [pts], (0, 0, 255))

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

fillPoly填充多边形如图2.30所示:

2.30-fillPoly填充多边形

6.绘制文本

putText(img,text,org,fontScale,color[,thickness[,lineType[,bottomLeftOrigin]]])绘制文本

参数说明:

  1. text 要绘制的文本
  2. org 文本在图片的左下角坐标
  3. fontFace 字体类型即字体
  4. fontScale 字体大小

(1)显示英文

import cv2
import numpy as np

# 创建纯黑的背景图
img = np.zeros((400, 600, 3), np.uint8)

# 绘制文本
cv2.putText(img, 'Hello OpenCV', (50, 100), cv2.FONT_HERSHEY_COMPLEX, 2, (0, 0, 255), 2)

# 显示图像
cv2.imshow('draw', img)

# 等待按键并关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

显示英文,如图2.31所示:

2.31-显示英文

(2)显示中文

导航到C:/Windows/Fonts,复制任何一个字体样式(ttf),粘贴到mven虚拟机的目录下

from PIL import ImageFont, ImageDraw, Image
import numpy as np
import cv2

# 创建纯白图像
img = np.full((500, 500, 3), fill_value=255, dtype=np.uint8)

# 导入字体文件
font = ImageFont.truetype('./方正粗黑宋简体.ttf', 35)

# 创建一个PIL图片
img_pil = Image.fromarray(img)

draw = ImageDraw.Draw(img_pil)

# 利用draw绘制中文
draw.text((100, 150), '你好,我好', font=font, fill=(0, 255, 0, 0))  
# 重新变为ndarray
img = np.array(img_pil)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

显示中文,如图2.32所示:

2.32-显示中文

(3)图片中显示文字

from PIL import ImageFont, ImageDraw, Image
import numpy as np
import cv2

# 导入字体文件
font = ImageFont.truetype('./方正粗黑宋简体.ttf', 35)
    
# 在图片内显示字符
img = cv2.imread('./dog.jpg')
    
# 创建一个pillow图片
img_pil = Image.fromarray(img)
    
draw = ImageDraw.Draw(img_pil)
    
# 利用draw绘制中文
draw.text((100, 150), '你好,我好', font=font, fill=(0, 255, 0, 0))   
    
# 重新变为ndarray
img = np.array(img_pil)
    
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()  

图片中显示文字,如图2.33所示:

2.33-图片中显示文字

(四)综合练习

练习:监听鼠标运动绘制图形

思路:

  • 按下按键比如1,进入绘制直线模式,需要记录起始位置,即按下鼠标左键的那一瞬间的坐标位置
  • 左键起来的鼠标坐标为终点,然后绘制
  • 按下l,拖动鼠标,绘制直线
  • 按下r,拖动鼠标,绘制矩形
  • 按下c,拖动鼠标,绘制圆,拖动的长度可以作为半径

示例代码:

import cv2
import numpy as np

# 这是一个全局标志,判断需要画什么类型的图
curshape = 0
startpos = (0, 0)

# 创建背景图
img = np.zeros((480, 640, 3), np.uint8)

# 要监听鼠标的行为,所以必须通过鼠标回调函数实现
def mouse_callback(event, x, y, flags, userdata):
    global curshape, startpos
    if event == cv2.EVENT_LBUTTONDOWN:
        # 记录起始位置
        startpos = (x, y)
    elif event == cv2.EVENT_LBUTTONUP:
        # 判断要画什么类型的图
        if curshape == 0:
            # 画直线
            cv2.line(img, startpos, (x, y), (0, 0, 255), 3)
        elif curshape == 1:
            # 画矩形
            cv2.rectangle(img, startpos, (x, y), (0, 0, 255), 3)
        elif curshape == 2:
            # 画圆
            # 计算半径
            a = (x - startpos[0])
            b = (y - startpos[1])
            # 注意,画圆时,半径必须为整数
            r = int((a**2 + b**2) ** 0.5)
            cv2.circle(img, startpos, r, (0, 0, 255), 3)
        else:
            print('暂不支持')

# 创建窗口
cv2.namedWindow('drawshape', cv2.WINDOW_NORMAL)
# 设置鼠标回调函数
cv2.setMouseCallback('drawshape', mouse_callback)

while True:
    cv2.imshow('drawshape', img)
    # 检测按键
    key = cv2.waitKey(1)
    if key == ord('q'):
        break
    elif key == ord('l'):
        curshape = 0
    elif key == ord('r'):
        curshape = 1
    elif key == ord('c'):
        curshape = 2

cv2.destroyAllWindows()

监听鼠标运动绘制图形,如图2.34所示:

2.34-监听鼠标运动绘制图形
『OpenCV-Python』绘制图形 推荐使用 OpenCV 做目标检查时,我们可以通过 OpenCV 提供的图形绘制功能,将监测到的目标框起来,方便我们调试。这些功能在数据可视化、图像标注等场景中非常实用。本文可在公众号免费阅读用法都很简单,动手试试~ 阅读详情

相关推荐

OpenCV-Python实战(3)——OpenCV中绘制图形与文本

OpenCV 是一个的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。本文介绍了 OpenCV 提供的与绘制图形和文本相关的函数。在图形方面,我们了解了如何绘制基本图形(直线、矩形和圆形等)以及高级图形(剪裁线、箭头、椭圆和多边形)。在文本方面,我们了解了如何绘制文本以及 OpenCV 库中的所有可用字体。

盼小辉丶的博客 2万+

OpenCV学习笔记

opencv学习笔记基本操作

zhangyan的博客 624

实战OpenCV之绘制图形

OpenCV除了用于图像显示之外,还提供了一系列接口和工具,以帮助开发者在图像上绘制各种图形。这里的图形包括:直线、矩形、圆形、椭圆、多边形等。另外,OpenCV还支持在图像上添加文字,对多张图像进行叠加操作。

hope_wisdom的技术博客 4888

【机器视觉】OpenCV 基础知识和绘制图(RGB、BGR、HSV、HSL、YUV、Mat)

- OpenCV用的最多的色彩空间是HSV. - Hue: 色相, 即色彩, 如红色, 蓝色. 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240° - Saturation: 饱和度, 表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

OpenCV开发笔记(七):OpenCV基础图形绘制

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/101026612 目录 前言 Demo 基础绘制 绘制直线:line 绘制椭圆:ellipse 绘制矩形:rectangle 绘制圆形:circle ...

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 4万+

传输线末端短路、开路、加电感的反射系数

时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。下图为用网络分析仪实测一长度为30cm的传输线末端加一0.6uH的线圈的反射系数。下图为用网络分析仪实测一末端短路的长度为30cm的传输线的反射系数。下图为用网络分析仪实测一末端开路的长度为30cm的传输线的反射系数。末端加电感相当于在传输线末端延长了一段后末端短路,使得相位下降速率。幅度为0dB, 相位由。幅度为0dB, 相位由。

johnboat的专栏 1873

OpenCV:02基础知识和绘制图形

最常见的色彩空间就是,人眼也是基于的色彩空间去分辨颜色的OpenCV默认使用的是,和色彩空间的区别在于图片在色彩通道上的排列顺序不同显示图片时要注意适配图片的色彩空间和显示环境的色彩空间:比如传入的图片是BGR色彩空间,显示环境是RGB色彩空间,就会出现颜色混乱的情况 OpenCV用的最多的色彩空间就是方便OpenCV做图像处理.比如根据的值就可以判断背景颜色.和差不多在顶部是纯白的, 不管是什么颜色.和的区别 理解: 是一种颜色编码方法。常使用在各个视频处理组件中。 在对照片或视频编码时,考虑到人类的

m0_59466249的博客 983

人工智能100问☞第5问:什么是AI三要素?

人工智能的核心三要素是​​数据、算法和算力​​,分别作为AI的“燃料”、“大脑”和“动力”,三者协同驱动智能系统的学习、推理与决策能力。

bjdx_001的博客 1992

1.OpenCV基础知识和绘制图形

Opencv的基本概念和绘制图形

jay19991209的博客 1021

从‘哒哒’声到静音顺滑:一文搞懂42步进电机细分控制的原理与实战(以TMC5160为例)

本文详细解析了42步进电机细分控制技术,以TMC5160为例,探讨如何通过正弦波电流调制和自适应波形整形实现静音运行。文章提供了实战配置指南,包括硬件连接、寄存器配置和调试技巧,帮助用户有效消除电机噪声,提升3D打印机、CNC机床等设备的运行效率。

weixin_42657024的博客 313

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4543

OpenCV+python实现图形绘制

OpenCV+python实现图形绘制简介一、线段绘制未完待续 简介 我们把图形绘制分为形状、文字、图片三种,其中形状绘制诸如线段、三角形、圆形等等。 一、线段绘制 我们首先来了解一下简单的线段绘制: 在线段绘制中我们使用的是line函数,我们首先只使用它的前四个参数(第一个参数表示目标图片数据, 二表示线段起始位置,三表示终止位置,四表示线段的颜色): import cv2 import numpy as np newImageInfo=(500,500,3) #定义图片的宽高信息 dst=np..

weixin_44051854的博客 3905

STM32----SPI+DMA高效读写外部Flash的配置与实战

本文详细介绍了STM32通过SPI+DMA高效读写外部Flash的配置与实战方法。针对大量数据传输场景,使用DMA技术可显著提升系统效率,释放CPU资源。文章包含完整的代码实现、常见问题调试技巧以及性能优化建议,帮助开发者快速掌握这一关键技术。

pea55的博客 1031

python和OpenCV绘制各类几何图形

本文详细介绍了OpenCV绘制几何图形的方法,利用cv2.line()、v2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.polylines()、cv2.putText()函数实现。初学者通过这篇文章将了解基础图形绘制的基础用法,为后续应用提供帮助。

s44359487yad的博客 1832

osg3.6.5---osgEarth3.2 实现数字地球的加载

目前我在网上找得比较多的是osgearth2.10及以下的版本及加载数字地球的方法,但是我使用的是osg3.6.5和osgEarth3.。但是3.x版本和2.x版本差别很大,主要区别在于2.x有7个主要库,而3.x版本只有osgEarth这一个库。所以,特别记录一下。后面我讲他集成到qt的窗体在上传更新新的代码。1.直接上源码pro文件和cpp文件。

枫影竹韵的博客 1009

【云原生系列】第一讲:什么是云计算

云计算(cloud computing):分布式:分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期:分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段:计算:分布式计算、效用计算、负载均衡、并行计算、存储。

颜淡慕潇 1万+

用OpenCV画简单图形以及绘制栅格地图

要完成opencv绘制栅格地图,需要具备的基础知识:opencv相关函数的简单使用(包括简单图形和网格的绘制)

2301_76360523的博客 2623

数据分析:蛋白质组的GO term的富集分析详解

在获取差异表达蛋白质的数据之后,依据蛋白质与基因的对应映射关系,开展GO(Gene Ontology)term的富集分析。通过这一分析流程,能够精准地识别出不同实验组中过表达基因所关联的显著富集的GO term通路。这些富集的GO term通路为后续的生物学研究提供了关键线索,有助于深入探究基因功能、揭示潜在的生物学机制,从而推动生物学发现的进程。

专注生信领域 1368

OpenCV_03图形绘制

绘制基本图形 圆 椭圆 多边形 文本 实战演练 代码如下:

weixin_45231460的博客 3874

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Opencv绘制基本图形

Opencv基本运用 1.线段绘制 方法 cv2.line(img, pt1, pt2, color, thickness, lineType, shift ) 参数: 1、img:图像; 2、pt1:线段的第一个点。 3、pt2:线段的第二个点; 4、color:颜色线颜色。 5、thickness:厚度线厚度。 6、lineType:线条的线型类型。请参见“线型”。 7、shift:点坐标中...

qq_42064159的博客 1634

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

OpenCV基础:绘制基本图形

本文介绍了如何使用 OpenCV + Python 绘制基本图形。通过调用 OpenCV 提供的绘图函数,我们可以轻松地在图像上绘制线条、矩形、圆形、椭圆、多边形以及文字。

u011186532的专栏 1365

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用OpenCV-Python实现基本图形和文本绘制

使用OpenCV-Python实现基本图形和文本绘制(包含详细的完整的程序和数据)资源-优快云文库 https://download.youkuaiyun.com/download/xiaoxingkongyuxi/89861480。中绘制基本到高级图形的方法及如何在图像上添加文本。这为图像处理和计算机视觉应用提供了基础,后续可以在此基础上实现更复杂的交互式图形和可视化效果。,我们可以轻松地绘制基本图形和文本。:可以添加鼠标事件,允许用户通过点击在图像上绘制形状。中的图形与文本绘制功能,如有任何问题,请随时问我!

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1189

【CV 向】OpenCV 图形绘制指南

Python OpenCV 是一个功能强大的计算机视觉库,除了图像处理和计算机视觉任务外,它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中标记感兴趣区域,还是在图像上绘制几何形状或文本,OpenCV 都为我们提供了简单易用的方法。函数在画布上绘制了一个以 (250, 250) 为中心、长轴为 150、短轴为 100 的黄色椭圆。通过本文的介绍,我们了解了如何使用 Python OpenCV 进行图形绘制。函数在画布上绘制了一个白色文本 “OpenCV”,位于 (200, 250) 的位置。

繁依Fanyi的博客 5199

十一、OpenCV中图形的绘制

本文主要介绍OpenCV中图形的绘制。

TechNomad的博客 1039
上一篇: 【OpenCV】(一)OpenCV概述和环境配置
下一篇: 【OpenCV】(三)图像的算数与位运算
Cccp.123
博客等级 码龄3年 5粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值