码迷,mamicode.com
首页 > 其他好文 > 详细

3.5 其他常见的灰度变换技术

时间:2018-08-16 21:03:03      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:show   imshow   name   res   ast   under   检查   1.2   article   

技术分享图片

技术分享图片
 1 ////////https://blog.csdn.net/uestc_c2_403/article/details/72814206
 2 #include "opencv2/highgui/highgui.hpp"
 3 #include "opencv2/imgproc/imgproc.hpp"
 4 #include "opencv2/opencv.hpp"
 5 #include "opencv2/core/core.hpp"
 6 #include <iostream>
 7 using namespace std;
 8 using namespace cv;
 9 //图像线性变换操作
10 cv::Mat linearTransform(cv::Mat srcImage, float a, int b)
11 {
12     if (srcImage.empty())
13     {
14         std::cout << "No data!" << std::endl;
15     }
16     const int nRows = srcImage.rows;
17     const int nCols = srcImage.cols;
18 cv:; Mat resultImage =
19     cv::Mat::zeros(srcImage.size(), srcImage.type());
20    //图像元素遍历
21    for (int i = 0; i < nRows; i++)
22    {
23        for (int j = 0; j < nCols; j++)
24        {
25            for (int c = 0; c < 3; c++)
26            {
27                //矩阵at操作,检查下标防止越界
28                resultImage.at<Vec3b>(i, j)[c] = saturate_cast<uchar>(a * (srcImage.at<Vec3b>(i, j)[c]) + b);
29            }
30        }
31    }
32    return resultImage;
33 }
34 int main()
35 {
36     cv::Mat srcImage = cv::imread("D:\\大海.jpg");
37     if (srcImage.empty())
38     {
39         return -1;
40     }
41 
42     cv::imshow("源图像", srcImage);
43     //线性变换
44     float a = 1.2;
45     int b = 50;
46     cv::Mat new_image = linearTransform(srcImage, a, b);
47     cv::imshow("dst", new_image);
48     cv::waitKey(0);
49     return 0;
50 }
View Code

技术分享图片

技术分享图片

 

3.5 其他常见的灰度变换技术

标签:show   imshow   name   res   ast   under   检查   1.2   article   

原文地址:https://www.cnblogs.com/thebreakofdawn/p/9489562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!