首页 > 代码库 > opencv学习笔记(01)——操作图像的像素

opencv学习笔记(01)——操作图像的像素

 1 #include <opencv2\core\core.hpp>
 2 #include <opencv2\highgui\highgui.hpp>
 3 #include <opencv2\imgproc\imgproc.hpp>
 4 #include <iostream>
 5 
 6 
 7 void salt(cv::Mat& image, int n)
 8 {
 9 
10     for(int k=0; k<n; k++)
11     {
12 
13         int i = rand() % image.cols;        
14         int j = rand() % image.rows;        
15 
16         // 灰度图像
17         if(image.channels() == 1)
18         {
19             cv::Mat_<uchar> img = image;
20             img(j,i) = 255;            
21         }else{// 彩色图像 
22             cv::Mat_<cv::Vec3b> img = image;
23             //image.at<cv::Vec3b>(j,i)[0] = 255;            
24             //image.at<cv::Vec3b>(j,i)[1] = 255;            
25             //image.at<cv::Vec3b>(j,i)[2] = 255;            
26 
27             img(j,i)[0] = 255;            
28             img(j,i)[1] = 255;            
29             img(j,i)[2] = 255;            
30         }
31 
32     }
33 
34 }
35 
36 
37 int main(int argc, char** argv)
38 {
39 
40     cv::Mat img = cv::imread("F:\\images\\boldt.jpg");    
41     cv::Mat img2 = img.clone();    
42 
43     double duration;
44     duration = static_cast<double>(cv::getTickCount());
45 
46     salt(img, 3000);    
47 
48     duration = static_cast<double>(cv::getTickCount()) - duration;
49     duration /= cv::getTickFrequency();
50 
51     cv::namedWindow("original");    
52     cv::imshow("original", img);
53     cv::namedWindow("altered");    
54     cv::imshow("altered", img2);
55 
56     std::cout << duration << std::endl;
57 
58     cv::waitKey(0);
59     return 0;
60 
61 }