使用opencv绘制基础图像

1 绘制直线

cv.line(img, start, end, color, thickness)

参数:

  • img:要绘制直线的图像
  • start,end:直线的起点和终点
  • color:线条的颜色
  • thickness:线条宽度

2 绘制圆形

cv.circle(img, centerpoint, r, color, thickness)

参数:

  • img:要绘制图形的图像
  • centerpoint,r:圆心和半径
  • color:线条的颜色
  • thickness:线条宽度,为-1时生成闭合团并填充颜色

3 绘制矩形

cv.rectangle(img, leftupper, rightdown, color, thickness)

参数:

  • img:要绘制矩形的图像
  • leftupper,rightdown:矩阵的左上角和右下角坐标
  • color:线条的颜色
  • thickness:线条宽度

4 向图像中添加文字

cv.putText(img, text, station, font, fontsize, color, thickness, cv, LINE_AA)

参数L:

  • img:图像
  • text:要写入的文本数据
  • station:文本的放置位置
  • font:字体
  • fontsize:字体大小

5 效果展示

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

# 1 创建一个空白的图像
img = np.zeros((512, 512, 4), np.uint8)

# 绘制图形
cv.circle(img, (352, 200), 160, (220, 10, 255), -1)
cv.rectangle(img, (5, 5), (180, 180), (216, 106, 34), 2)
cv.putText(img, "zpy", (10, 80), cv.FONT_HERSHEY_SCRIPT_SIMPLEX, 4,  (126, 155, 205), 3)
cv.line(img, (0, 200), (512, 200), (255, 123, 203), 10)

# 显示结果
plt.imshow(img[:, :, ::-1])
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV提供了绘制图像灰度曲线的函数cv::calcHist()和cv::plotHistogram()。以下是一个示例代码,展示如何使用这两个函数来绘制图像的灰度曲线。 ```c++ #include <opencv2/opencv.hpp> int main() { cv::Mat src = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像 cv::Mat hist; // 声明直方图 int histSize[] = {256}; // 直方图的大小 float gray_range[] = {0, 256}; // 灰度值范围 const float* histRange[] = {gray_range}; cv::calcHist(&src, 1, 0, cv::Mat(), hist, 1, histSize, histRange); // 计算直方图 int hist_w = 512, hist_h = 400; int bin_w = cvRound((double)hist_w / 256); cv::Mat histImage(hist_h, hist_w, CV_8UC3, cv::Scalar(0, 0, 0)); // 画布 cv::normalize(hist, hist, 0, histImage.rows, cv::NORM_MINMAX, -1, cv::Mat()); // 归一化 for (int i = 1; i < 256; i++) { cv::line(histImage, cv::Point(bin_w * (i - 1), hist_h - cvRound(hist.at<float>(i - 1))), cv::Point(bin_w * i, hist_h - cvRound(hist.at<float>(i))), cv::Scalar(255, 255, 255), 2, 8, 0); } cv::imshow("Gray Histogram", histImage); cv::waitKey(); return 0; } ``` 首先使用cv::imread()读取灰度图像,然后使用cv::calcHist()计算其灰度直方图。通过设置直方图的大小和灰度值范围,我们可以得到256个bin的灰度直方图。 然后,我们创建一个尺寸为512x400的画布,使用cv::normalize()将灰度直方图归一化到[0, 400]的范围内。使用bin_w = cvRound((double)hist_w / 256)计算每个bin的宽度,并使用cv::line()在画布上绘制直方图的线条。 最后,使用cv::imshow()显示绘制的灰度曲线,并使用cv::waitKey()等待按键,直到用户按下键盘上的某个键退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值