OpenCV在图片上画线和矩形

今天讲一下通过opencv的Line函数,在图像中绘制一条我们想要的直线或者线段,以及使用Rectangle函数绘制矩形;

CV_RGB

创建一个色彩值.

#define CV_RGB( r, g, b )  cvScalar( (b), (g), (r) )

Line

绘制连接两个点的线段

void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,
             int thickness=1, int line_type=8, int shift=0 );

img:图像;

pt1:线段的第一个端点。

pt2:线段的第二个端点。

color:线段的颜色。

thickness:线段的粗细程度。

line_type:线段的类型。

8 (or 0) – 8-connected line(8邻接)连接 线。

4 – 4-connected line(4邻接)连接线。

CV_AA – antialiased 线条。

shift:坐标点的小数点位数。

函数cvLine 在图像中的点1和点2之间画一条线段。线段被图像或感兴趣的矩形(ROI rectangle)所裁剪。对于具有整数坐标的non-antialiasing 线条,使用8-连接或者4-连接Bresenham 算法。画粗线条时结尾是圆形的。画 antialiased 线条使用高斯滤波。要指定线段颜色,用户可以使用使用宏CV_RGB( r, g, b )。

Rectangle

绘制简单、指定粗细或者带填充的 矩形

void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,
                  int thickness=1, int line_type=8, int shift=0 );

img:图像.

pt1:矩形的一个顶点。

pt2:矩形对角线上的另一个顶点

color:线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。

thickness:组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。

line_type:线条的类型。见cvLine的描述

shift:坐标点的小数点位数。

函数 cvRectangle 通过对角线上的两个顶点绘制矩形。

line1.cpp
#include 
using namespace cv;
int  main()
{
     Mat src = imread("./Lina.jpg");
     //Rect rect(230, 5, 280, 290);
     int x=50;
     int y=50;
     Rect rect(x, y, 40, 20);
     cv::line(src,Point(50,50),Point(90,70),1,LINE_4,0);
     cv::rectangle(src, rect, Scalar(255, 0, 0),1, LINE_8,0);
    //  cv::rectangle(src, Point(230, 5), Point(510, 295), Scalar(255, 255, 255), 5, LINE_8, 0);
     imwrite("src.jpg", src);
     imshow("src", src);
     waitKey(0);
     return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( test )
find_package( OpenCV REQUIRED )
add_executable( test line1.cpp )
target_link_libraries( test ${OpenCV_LIBS} )
#  cmake .
#  make
#  ./test

原图 

OpenCV在图片上画线和矩形_第1张图片

叠加后 

OpenCV在图片上画线和矩形_第2张图片

你可能感兴趣的:(opencv,工作笔记,opencv,计算机视觉,人工智能)