ubuntu22.04@laptop OpenCV Get Started: 006_annotating_images

这篇具有很好参考价值的文章主要介绍了ubuntu22.04@laptop OpenCV Get Started: 006_annotating_images。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 源由

为图像和视频添加注释的目的不止一个,OpenCV使这个过程简单明了。

下来,一起看一如何使用它:

  1. 将信息添加到图像上
  2. 在对象检测的情况下,围绕对象绘制边界框
  3. 突出显示具有不同颜色的像素以进行图像分割

一旦学会了对图像进行注释,对视频帧的注释也是同样的道理。

2. line/circle/rectangle/ellipse/text 应用Demo

006_annotating_images是OpenCV进行注释的示例程序。

  • 划线
  • 画圆
  • 矩形
  • 椭圆
  • 文字

确认OpenCV安装路径:

$ find /home/daniel/ -name "OpenCVConfig.cmake"
/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/
/home/daniel/OpenCV/opencv/build/OpenCVConfig.cmake
/home/daniel/OpenCV/opencv/build/unix-install/OpenCVConfig.cmake


$ export OpenCV_DIR=/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/

3 image_annotation

3.1 C++应用Demo

C++应用Demo工程结构:

006_annotating_images/CPP$ tree .
.
├── CMakeLists.txt
├── image_annotation.cpp
└── sample.jpg

0 directories, 3 files

C++应用Demo工程编译执行:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/image_annotation

3.2 Python应用Demo

Python应用Demo工程结构:

006_annotating_images/Python$ tree .
.
├── image_annotation.py
├── requirements.txt
└── sample.jpg

0 directories, 3 files

Python应用Demo工程执行:

$ workoncv-4.9.0
$ python image_annotation.py

3.3 重点过程分析

3.3.1 划线

  • line(image, start_point, end_point, color, thickness)

第一个参数:行 (高度, 自上而下递增)
第二个参数:列 (宽度, 自左往右递增)

C++:

// Draw line on image
Mat imageLine = img.clone();
// Draw the image from point  A to B
Point pointA(200,80);
Point pointB(450,80);
line(imageLine, pointA,  pointB, Scalar(255, 255, 0), 3, 8, 0);
imshow("Lined Image", imageLine);
waitKey();

Python:

# Draw line on image
imageLine = img.copy()
# Draw the image from point  A to B
pointA = (200,80)
pointB = (450,80)
cv2.line(imageLine, pointA, pointB, (255, 255, 0), thickness=3, lineType=cv2.LINE_AA)
cv2.imshow('Image Line', imageLine)
cv2.waitKey(0)

3.3.2 画圆

  • circle(image, center_coordinates, radius, color, thickness)

C++:

// Draw Circle on image
Mat imageCircle = img.clone();
int radius = 100;
Point circle_center(415,190);
circle(imageCircle, circle_center, radius, Scalar(0, 0, 255), 3, 8, 0);
imshow("Circle on Image", imageCircle);
waitKey();

// Draw Filled Circle
Mat Filled_circle_image = img.clone();
circle(Filled_circle_image, circle_center, radius, Scalar(255, 0, 0), -1, 8, 0);
imshow("Circle on Image", Filled_circle_image);
waitKey();

Python:

# Draw Circle on image
imageCircle = img.copy()
circle_center = (415,190)
radius =100
cv2.circle(imageCircle, circle_center, radius, (0, 0, 255), thickness=3, lineType=cv2.LINE_AA)
cv2.imshow("Image Circle",imageCircle)
cv2.waitKey(0)

# Draw Filled Circle
Filled_circle_image = img.copy()
cv2.circle(Filled_circle_image, circle_center, radius, (255, 0, 0), thickness=-1, lineType=cv2.LINE_AA)
cv2.imshow('Image with Filled Circle',Filled_circle_image)
cv2.waitKey(0)

3.3.3 矩形

  • rectangle(image, start_point, end_point, color, thickness)

C++:

// Draw Rectangle
Mat imageRectangle = img.clone();
Point start_point(300,115);
Point end_point(475,225);
rectangle(imageRectangle, start_point, end_point, Scalar(0,0,255), 3, 8, 0);
imshow("Rectangle on Image", imageRectangle);
waitKey();

Python:

# Draw Rectangle
imageRectangle = img.copy()
start_point = (300,115)
end_point = (475,225)
cv2.rectangle(imageRectangle, start_point, end_point, (0, 0, 255), thickness= 3, lineType=cv2.LINE_8)   
cv2.imshow('imageRectangle', imageRectangle)
cv2.waitKey(0)

3.3.4 椭圆

  • ellipse(image, centerCoordinates, axesLength, angle, startAngle, endAngle, color, thickness)

C++:

// Draw Ellipse
Mat imageEllipse = img.clone();
// Horizontal
Point ellipse_center(415,190);
Point axis1(100, 50);
Point axis2(125, 50);
ellipse(imageEllipse, ellipse_center, axis1, 0, 0, 360, Scalar(255, 0, 0), 3, 8, 0);
// Vertical
ellipse(imageEllipse, ellipse_center, axis2, 90, 0, 360, Scalar(0, 0, 255), 3, 8, 0);
imshow("Ellipses on Image", imageEllipse);
waitKey();


Mat halfEllipse = img.clone();
// Half Ellipse
ellipse(halfEllipse, ellipse_center, axis1, 0, 180, 360, Scalar(255, 0, 0), 3, 8, 0);
// Filled ellipse
ellipse(halfEllipse, ellipse_center, axis1, 0, 0, 180, Scalar(0, 0, 255), -2, 8, 0);
imshow("halfEllipse", halfEllipse);
waitKey();

Python:

# Draw Ellipse
imageEllipse = img.copy()
ellipse_center = (415,190)
axis1 = (100,50)
axis2 = (125,50)
cv2.ellipse(imageEllipse, ellipse_center, axis1, 0, 0, 360, (255, 0, 0), thickness=3, lineType=cv2.LINE_AA)
cv2.ellipse(imageEllipse, ellipse_center, axis2, 90, 0, 360, (0, 0, 255), thickness=3, lineType=cv2.LINE_AA)
cv2.imshow('ellipse Image',imageEllipse)
cv2.waitKey(0)


halfEllipse = img.copy()
# Half Ellipse
cv2.ellipse(halfEllipse, ellipse_center, axis1, 0, 180, 360, (255, 0, 0), thickness=3, lineType=cv2.LINE_AA)
# Filled ellipse
cv2.ellipse(halfEllipse, ellipse_center, axis1, 0, 0, 180, (0, 0, 255), thickness=-2, lineType=cv2.LINE_AA)
cv2.imshow('HalfEllipse',halfEllipse)
cv2.waitKey(0)

3.3.5 文字

  • putText(image, text, org, font, fontScale, color)

C++:

// Put Text on Image
Mat imageText = img.clone();
// org: Where you want to put the text
Point org(50,350);
putText(imageText, "I am a Happy dog!", org, FONT_HERSHEY_COMPLEX, 1.5, Scalar(0,255,0), 3, 8, false);
imshow("Text on Image", imageText);
waitKey(0);

Python:

# Put Text on Image
imageText = img.copy()
text = 'I am a Happy dog!'
# org: Where you want to put the text
org = (50,350)
cv2.putText(imageText, text, org, fontFace = cv2.FONT_HERSHEY_COMPLEX, fontScale = 1.5,
            color = (250,225,100),thickness =  3, lineType=cv2.LINE_AA)
cv2.imshow("Image Text",imageText)
cv2.waitKey(0)

4. 总结

通过以下5个API对图像进行操作,分别在图像上划线、画圆、矩形、椭圆,以及标注文字的方式进行注释。

  1. line(image, start_point, end_point, color, thickness)
  2. circle(image, center_coordinates, radius, color, thickness)
  3. rectangle(image, start_point, end_point, color, thickness)
  4. ellipse(image, centerCoordinates, axesLength, angle, startAngle, endAngle, color, thickness)
  5. putText(image, text, org, font, fontScale, color)

5. 参考资料

【1】ubuntu22.04@laptop OpenCV Get Started
【2】ubuntu22.04@laptop OpenCV安装
【3】ubuntu22.04@laptop OpenCV定制化安装

6. 补充

学习是一种过程,对于前面章节学习讨论过的,就不在文中重复了。

有兴趣了解更多的朋友,请从《ubuntu22.04@laptop OpenCV Get Started》开始,一个章节一个章节的了解,循序渐进。文章来源地址https://www.toymoban.com/news/detail-830272.html

到了这里,关于ubuntu22.04@laptop OpenCV Get Started: 006_annotating_images的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu22.04@laptop OpenCV Get Started: 008_image_filtering_using_convolution

    卷积过滤也是OpenCV图像最基本的操作之一。 可能有人会问,这么复杂,什么是卷积?还矩阵,线性代数? 千万不要这么想,记住一点,计算机编程不是学数学,学物理,学化学,学辩证哲学这种逻辑复杂的学科。凡事我们应该尽量简化,不用想得这么复杂。因为,这些复杂

    2024年02月21日
    浏览(37)
  • ubuntu22.04@laptop OpenCV Get Started: 015_deep_learning_with_opencv_dnn_module

    计算机视觉领域自20世纪60年代末以来就存在。图像分类和物体检测是计算机视觉中一些最古老的问题,研究人员尝试解决这些问题已经数十年。 目前,使用神经网络和深度学习,已经达到了一个阶段,计算机可以开始以高精度实际理解和识别对象,甚至在许多情况下超过人

    2024年02月20日
    浏览(43)
  • ubuntu 22.04 apt-get 安装软件报错:Temporary failure resolving ‘cn.archive.ubuntu.com‘

    Err:1 http://cn.archive.ubuntu.com/ubuntu jammy/main amd64 libtcl8.6 amd64 8.6.12+dfsg-1build1 Temporary failure resolving ‘cn.archive.ubuntu.com’ Err:2 http://cn.archive.ubuntu.com/ubuntu jammy/main amd64 tcl8.6 amd64 8.6.12+dfsg-1build1 Temporary failure resolving ‘cn.archive.ubuntu.com’ Err:3 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd6

    2024年04月10日
    浏览(65)
  • ubuntu22.04,ros2使用自带opencv读取图片

    从网上找了很久的ros2如何使用自带的opencv库或者自定义安装opencv库的教程,自己看的云里雾里的,跟着配置走下来依旧是不能使用,出现的最多的问题,就是找不到头文件或者undefined reference to \\\'cv::imread(std::cxxll::basic stringchar, std::char traits, std::allocator const, int)\\\'这一类的未定义

    2024年02月10日
    浏览(51)
  • ubuntu22.04@Jetson Orin Nano之OpenCV安装

    昨天用Jetson跑demo程序发现帧率很慢(只有10FPS左右),按照视频文件怎么说应该有30FPS。但是为什么jetson orin nano跑不起来呢??? dnn_object_detection_embedded_device 想着,估计是GPU没有跑起来,正好凑着调试了下板子,记录、整理下资料。 从现象上看,OpenCV运行的时候没有跑GPU,从

    2024年02月21日
    浏览(49)
  • 成功解决ubuntu-22.04的sudo apt-get update一直卡在【0% [Waiting for headers]】

    在下载安装包的时候一直卡在0% [Waiting for headers], 报错信息 如下: Get:1 file:/var/cudnn-local-repo-ubuntu1804-8.5.0.96 InRelease [1,575 B] Get:1 file:/var/cudnn-local-repo-ubuntu1804-8.5.0.96 InRelease [1,575 B] Get:2 file:/var/cudnn-local-repo-ubuntu1804-8.5.0.96 Packages [950 B] Get:3 https://dl.google.com/linux/chrome/deb stable In

    2024年02月14日
    浏览(54)
  • ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头

    opencv的安装过程可参考下面博文,亲测有效(容易出现问题的地方在安装下面依赖的时候,一般会出现报错,需要自己换源,否则后面可能会出现打不开照片或者打开照片是空白的问题) 博文参考:(3条消息) ubuntu22.04 OpenCV4.6.0(c++)环境配置_路飞DoD的博客-CSDN博客 运行终端,输

    2024年02月16日
    浏览(45)
  • ubuntu22.04(opencv安装):python-dev、python-numpy、libdc1394-22-dev无法安装问题

    网上很多ubuntu安装opencv的教程在安装opencv依赖时出现无法定位的问题: 推荐使用以下命令安装依赖: sudo apt-get install python-dev-is-python3 python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-dev 仔细观察以下就发现哪里有区别了 建议以后出现这种问题多去googl

    2024年01月19日
    浏览(61)
  • Opencv cuda版本在ubuntu22.04中安装办法,解决Could NOT find CUDNN的办法

    解决以下安装问题: 连接地址: https://developer.nvidia.com/cuda-downloads?target_os=Linuxtarget_arch=x86_64Distribution=Ubuntutarget_version=22.04target_type=runfile_local 注意,请下载对应驱动的版本。 默认驱动和 cuda toolkit都会安装成功! 官网下载cuda对应版本的cudnn: https://developer.nvidia.com/rdp/cudnn-arch

    2024年02月03日
    浏览(65)
  • Ubuntu22.04 系统 解决输入nvcc -V 显示sudo apt-get install nvidia-cuda-toolkit安装 即CUDA环境配置问题

    参考: ubuntu解决没有nvcc命令的错误_nvcc没有_妖妖灵誓言的博客-CSDN博客 Linux 进入root管理员权限_linux进入管理员模式命令_Xav Zewen的博客-CSDN博客 Linux 进入root管理员权限_linux进入管理员模式命令_Xav Zewen的博客-CSDN博客   ----------------------------------------------解决输入nvcc -V-------

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包