在灰度图像上划线

两种办法
1。是生成3通道的图象,每个通道都一样,这样看起来也是灰度图,好处是可以在其上画彩色图象
2。直接画,这是要注意不要使用CV_RGB(255,255,0)之类的彩色
要使用cvScalar(127)就可以,或是CV_RGB(127,127,127)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值