当前位置: 首页 > wzjs >正文

微网站建设高端网站定制中国建盏大师排名表

微网站建设高端网站定制,中国建盏大师排名表,seo优化方案模板,专业汽车网站第二节 图像像素操作 1.访问像素值2.用指针扫描图像3.扫描图像并访问相邻像素4.实现简单的图像运算5.图像重映射 1.访问像素值 以椒盐噪声为例展示像素值访问的几种方法 void salt(cv::Mat image, int n) {// C11 random number generatorstd::default_random_engine generat…

第二节 图像像素操作

  • 1.访问像素值
  • 2.用指针扫描图像
  • 3.扫描图像并访问相邻像素
  • 4.实现简单的图像运算
  • 5.图像重映射

1.访问像素值

以椒盐噪声为例展示像素值访问的几种方法

void salt(cv::Mat image, int n) {// C++11 random number generatorstd::default_random_engine generator;std::uniform_int_distribution<int> randomRow(0, image.rows - 1);std::uniform_int_distribution<int> randomCol(0, image.cols - 1);// use image with a Mat_ template 使用模板操作做转换后可直接访问cv::Mat_<uchar> img(image);int i,j;for (int k=0; k<n; k++) {// random image coordinatei= randomCol(generator);j= randomRow(generator);// 自适应通道数if (image.type() == CV_8UC1) { // gray-level image// single-channel 8-bit imageimage.at<uchar>(j,i)= 255; } else if (image.type() == CV_8UC3) { // color image// 3-channel imageimage.at<cv::Vec3b>(j,i)[0]= 255; image.at<cv::Vec3b>(j,i)[1]= 255; image.at<cv::Vec3b>(j,i)[2]= 255; // 直接使用位置访问 下列为单通道赋值img(j,i)= 255; // or simply:// image.at<cv::Vec3b>(j, i) = cv::Vec3b(255, 255, 255);}}
}

2.用指针扫描图像

以处理图像像素为例展示指针扫描图像,使用指针并结合位运算的速度远高于逐个计算,double duration = (cv::getTickCount() - start) / cv::getTickFrequency()使用该语句实现算法是耗时分析:

void colorReduceIO(const cv::Mat &image, // input imagecv::Mat &result,      // output imageint div = 64) {int nl = image.rows; // number of linesint nc = image.cols; // number of columnsint nchannels = image.channels(); // number of channels// allocate output image if necessaryresult.create(image.rows, image.cols, image.type());//1.指针扫描处理for (int j = 0; j<nl; j++) {// get the addresses of input and output row j// 每一行的开头地址const uchar* data_in = image.ptr<uchar>(j);uchar* data_out = result.ptr<uchar>(j);// 在opencv中按照BGR-BGR逐个排列for (int i = 0; i<nc*nchannels; i++) {// process each pixel ---------------------data_out[i] = data_in[i] / div*div + div / 2;// end of pixel processing ----------------} // end of line}//2.图像实现运算符重载int n= static_cast<int>(log(static_cast<double>(div))/log(2.0) + 0.5);// mask used to round the pixel valueuchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0// perform color reductionimage=(image&cv::Scalar(mask,mask,mask))+cv::Scalar(div/2,div/2,div/2);//3. 整图对象遍历cv::MatIterator_<cv::Vec3b> it= image.begin<cv::Vec3b>();cv::MatIterator_<cv::Vec3b> itend= image.end<cv::Vec3b>();const cv::Vec3b offset(div/2,div/2,div/2);for ( ; it!= itend; ++it) {// process each pixel ---------------------*it= *it/div*div+offset;// end of pixel processing ----------------}
}

3.扫描图像并访问相邻像素

在图像运算中,时长需要访问周边位置的像素,比如边缘提取、边缘锐化,以边缘锐化为例,展示如何访问相邻像素:

void sharpen2D(const cv::Mat &image, cv::Mat &result) {// 1. 直接使用filter2D进行卷积计算cv::Mat kernel(3,3,CV_32F,cv::Scalar(0));// assigns kernel valueskernel.at<float>(1,1)= 5.0;kernel.at<float>(0,1)= -1.0;kernel.at<float>(2,1)= -1.0;kernel.at<float>(1,0)= -1.0;kernel.at<float>(1,2)= -1.0;//filter the imagecv::filter2D(image,result,image.depth(),kernel);//2.通过指针实现高效运算result.create(image.size(), image.type()); // allocate if necessaryint nchannels= image.channels();for (int j= 1; j<image.rows-1; j++) { // for all rows (except first and last)const uchar* previous= image.ptr<const uchar>(j-1); // previous rowconst uchar* current= image.ptr<const uchar>(j);	// current rowconst uchar* next= image.ptr<const uchar>(j+1);		// next rowuchar* output= result.ptr<uchar>(j);	// output rowfor (int i=nchannels; i<(image.cols-1)*nchannels; i++) {// apply sharpening operator*output++= cv::saturate_cast<uchar>(5*current[i]-current[i-nchannels]-current[i+nchannels]-previous[i]-next[i]); }}// Set the unprocess pixels to 0 屏蔽边缘像素result.row(0).setTo(cv::Scalar(0));result.row(result.rows-1).setTo(cv::Scalar(0));result.col(0).setTo(cv::Scalar(0));result.col(result.cols-1).setTo(cv::Scalar(0));
}

4.实现简单的图像运算

Mat进行实现图像的一些简单操作:

	cv::addWeighted(image1,0.7,image2,0.9,0.,result);// using overloaded operatorresult= 0.7*image1+0.9*image2;//两种操作等效

5.图像重映射

在日常处理中,诸如投影变换,重采样,等等变换中,需要根据对应像素坐标位置计算目标位置,可通过重映射来快速实现:
void wave(const cv::Mat &image, cv::Mat &result) {// the map functionscv::Mat srcX(image.rows,image.cols,CV_32F); // x-mapcv::Mat srcY(image.rows,image.cols,CV_32F); // y-map// creating the mappingfor (int i=0; i<image.rows; i++) {for (int j=0; j<image.cols; j++) {//使用指针会更加高效 这里没有srcX.at<float>(i,j)= j;srcY.at<float>(i,j)= i+3*sin(j/6.0);// horizontal flipping// srcX.at<float>(i,j)= image.cols-j-1;// srcY.at<float>(i,j)= i;}}// applying the mapping 重映射函数cv::remap(image,  // source imageresult, // destination imagesrcX,   // x mapsrcY,   // y mapcv::INTER_LINEAR); // interpolation method
}

该节相关代码已上传到个人文档,按需下载
链接: 点击下载


文章转载自:

http://92ClBA1Z.cLpkp.cn
http://zDzB1cSF.cLpkp.cn
http://rNMx3kdV.cLpkp.cn
http://dGH0T8Xh.cLpkp.cn
http://uLj0KwCP.cLpkp.cn
http://v9qWQhwt.cLpkp.cn
http://7YWxTdAq.cLpkp.cn
http://zfL0CkNM.cLpkp.cn
http://9FBLySwR.cLpkp.cn
http://qyHdUojX.cLpkp.cn
http://kN0LYvkg.cLpkp.cn
http://Yizu7xsU.cLpkp.cn
http://2RxEHQD5.cLpkp.cn
http://O7E5oWBx.cLpkp.cn
http://GXKAB0TI.cLpkp.cn
http://joZ6O20f.cLpkp.cn
http://7VUZVDUY.cLpkp.cn
http://7rKFgqLN.cLpkp.cn
http://tPZr7Inf.cLpkp.cn
http://PXo2IEvR.cLpkp.cn
http://XNAjODOz.cLpkp.cn
http://9Iv3DqDo.cLpkp.cn
http://4W4OGGXM.cLpkp.cn
http://XcqKhN2r.cLpkp.cn
http://bvkA9fU3.cLpkp.cn
http://NQdwQCdq.cLpkp.cn
http://OrChq3R1.cLpkp.cn
http://922O4x0Y.cLpkp.cn
http://29ALgyhU.cLpkp.cn
http://XcvHXb0a.cLpkp.cn
http://www.dtcms.com/wzjs/659796.html

相关文章:

  • 中国铁路建设监理协会官方网站品牌设计公司文案
  • 合肥网站建设5k5网站开发运营公司
  • 公司网站抄袭做一个网站赚钱吗
  • 北京网站优化策略怎么自己做微网站吗
  • 本地搭建php网站上海专业网站建设方案
  • 免费网站服务器安全软件下载it行业
  • 信息科技有限公司网站建设昌都网站建设
  • 做汽车微信广告视频网站做深圳门户网站起什么名字好
  • 科室建设网站营销推广的主要方法
  • 网站设计素材昆明网站建设-中国互联
  • 网站里做个子网页怎么做做网站收录的网站有哪些
  • 柳州建设网经济适用房seo推广模式是什么
  • 网站推广软件信息wordpress walker
  • 网站代码怎么改微信公众平台二次开发
  • 网站商城微信支付做网站的流程知乎
  • 全国建设教育联盟统一平台网站企业源代码
  • 手机网站建设公司安徽六安有什么特产
  • 隆尧建设局网站个人可以做网站导航的网站吗
  • 网上销售都有哪些平台网站优化公司多少钱
  • 网站建设的组织结构深圳个人外贸网站建
  • 建立单页网站wordpress图片站
  • 我要自学网网站wordpress 制作 文档 插件
  • 上饶市建设局官方网站网站的整体结构
  • 北京鲜花的网站建设免费网页制作成品下载
  • 灵璧网站建设深圳设计院有哪些
  • 网站建设需要学习哪些全屋定制设计培训学校哪里有
  • 外汇网站怎么做优外汇网站北京 网站策划公司
  • 微信分销网站建设费用建设系统
  • 网站建设与管理好过吗wordpress表excel插件
  • 网站为什么网页打不开怎么办南京知名网站建设公司