分享

2.2 存取像素值

 木俊 2018-05-07

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

void salt(cv::Mat &image, int n) {

 int i,j;
 for (int k=0; k<n; k++) {

  // rand() is the MFC random number generator
  i= rand()%image.cols;
  j= rand()%image.rows;


  if (image.channels() == 1) { // gray-level image

   image.at<uchar>(j,i)= 255;

  } else if (image.channels() == 3) { // color image

   image.at<cv::Vec3b>(j,i)[0]= 255;
   image.at<cv::Vec3b>(j,i)[1]= 255;
   image.at<cv::Vec3b>(j,i)[2]= 255;
  }
 }
}

int main()
{
 srand(cv::getTickCount()); // init random number generator

 cv::Mat image= cv::imread("boldt.jpg",0);

 salt(image,3000);

 cv::namedWindow("Image");
 cv::imshow("Image",image);

 cv::imwrite("salted.bmp",image);

 cv::waitKey(5000);

 return 0;
}


​#include"iostream"
using namespace std;

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

void salt(Mat & image, int n)
{
 for (int i = 0; i < n; i++)
 {
  int a = rand() % image.cols;
  int b = rand() % image.rows;
  if (image.channels() == 1)
  {
   image.at<uchar>(a, b) = 255;
  }
  else if (image.channels() == 3)
  {
   image.at<Vec3b>(a, b)[0] = 255; //b
   image.at<Vec3b>(a, b)[1] = 255;//g
   image.at<Vec3b>(a, b)[2] = 255;//r

  }
 }
}

int main()
{
 Mat image = imread("boldt.jpg");
 salt(image, 1000);
 namedWindow("image");
 imshow("Image", image);
 waitKey(3000);
 return 0;

 


}



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多