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

单页成品网站域名信息查询网站

单页成品网站,域名信息查询网站,企业展示型网站 建站系统,asp.net网站开发教程 pdf文章选自: 一、像素访问 一张图片由许多个点组成,每个点就是一个像素,每个像素包含不同的值,对图像像素操作是图像处理过程中常使用的 二、访问像素 void Samples::AccessPixels1(Mat &image, int div 64) {int nl imag…

文章选自:
请添加图片描述

一、像素访问

一张图片由许多个点组成,每个点就是一个像素,每个像素包含不同的值,对图像像素操作是图像处理过程中常使用的

二、访问像素

void Samples::AccessPixels1(Mat &image, int div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------data[i] = data[i] / div * div + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//-----------------------------------【方法二】-------------------------------------------------
//      说明:利用 .ptr 和 * ++
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels2(Mat &image, int div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------*data++ = *data / div * div + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//-----------------------------------------【方法三】-------------------------------------------
//      说明:利用.ptr 和 * ++ 以及模操作
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels3(Mat &image, int div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------int v = *data;*data++ = v - v % div + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//----------------------------------------【方法四】---------------------------------------------
//      说明:利用.ptr 和 * ++ 以及位操作
//----------------------------------------------------------------------------------------------------
void Samples::AccessPixels4(Mat &image, int  div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 对于 div=16, mask= 0xF0for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//------------开始处理每个像素-------------------*data++ = *data & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//----------------------------------------【方法五】----------------------------------------------
//      说明:利用指针算术运算
//---------------------------------------------------------------------------------------------------
void Samples::AccessPixels5(Mat &image, int  div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));int step = image.step; //有效宽度//掩码值uchar mask = 0xFF << n; // e.g. 对于 div=16, mask= 0xF0//获取指向图像缓冲区的指针uchar *data = image.data;for (int j = 0; j < nl; j++) {for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------*(data + i) = *data & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束data += step; // next line}
}//---------------------------------------【方法六】----------------------------------------------
//      说明:利用 .ptr 和 * ++以及位运算、image.cols * image.channels()
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels6(Mat &image, int  div = 64) {int nl = image.rows; //行数int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 例如div=16, mask= 0xF0for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < image.cols * image.channels(); i++) {//-------------开始处理每个像素-------------------*data++ = *data & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}// -------------------------------------【方法七】----------------------------------------------
//      说明:利用.ptr 和 * ++ 以及位运算(continuous)
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels7(Mat &image, int  div = 64) {int nl = image.rows;                    //行数int nc = image.cols * image.channels(); //每行元素的总元素数量if (image.isContinuous()) {//无填充像素nc = nc * nl;nl = 1; // 为一维数列}int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 比如div=16, mask= 0xF0for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------*data++ = *data & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//------------------------------------【方法八】------------------------------------------------
//      说明:利用 .ptr 和 * ++ 以及位运算 (continuous+channels)
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels8(Mat &image, int  div = 64) {int nl = image.rows; //行数int nc = image.cols; //列数if (image.isContinuous()) {//无填充像素nc = nc * nl;nl = 1; // 为一维数组}int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 比如div=16, mask= 0xF0for (int j = 0; j < nl; j++) {uchar *data = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------*data++ = *data & mask + div / 2;*data++ = *data & mask + div / 2;*data++ = *data & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}// -----------------------------------【方法九】 ------------------------------------------------
//      说明:利用Mat_ iterator
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels9(Mat &image, int  div = 64) {//获取迭代器Mat_<Vec3b>::iterator it = image.begin<Vec3b>();Mat_<Vec3b>::iterator itend = image.end<Vec3b>();for (; it != itend; ++it) {//-------------开始处理每个像素-------------------(*it)[0] = (*it)[0] / div * div + div / 2;(*it)[1] = (*it)[1] / div * div + div / 2;(*it)[2] = (*it)[2] / div * div + div / 2;//-------------结束像素处理------------------------} //单行处理结束
}//-------------------------------------【方法十】-----------------------------------------------
//      说明:利用Mat_ iterator以及位运算
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels10(Mat &image, int  div = 64) {// div必须是2的幂int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 比如 div=16, mask= 0xF0// 获取迭代器Mat_<Vec3b>::iterator it = image.begin<Vec3b>();Mat_<Vec3b>::iterator itend = image.end<Vec3b>();//扫描所有元素for (; it != itend; ++it) {//-------------开始处理每个像素-------------------(*it)[0] = (*it)[0] & mask + div / 2;(*it)[1] = (*it)[1] & mask + div / 2;(*it)[2] = (*it)[2] & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束
}//------------------------------------【方法十一】---------------------------------------------
//      说明:利用Mat Iterator_
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels11(Mat &image, int  div = 64) {//获取迭代器Mat_<Vec3b>           cimage = image;Mat_<Vec3b>::iterator it = cimage.begin();Mat_<Vec3b>::iterator itend = cimage.end();for (; it != itend; it++) {//-------------开始处理每个像素-------------------(*it)[0] = (*it)[0] / div * div + div / 2;(*it)[1] = (*it)[1] / div * div + div / 2;(*it)[2] = (*it)[2] / div * div + div / 2;//-------------结束像素处理------------------------}
}void Samples::AccessPixels12(Mat &image, int  div = 64) {int nl = image.rows; //行数int nc = image.cols; //列数for (int j = 0; j < nl; j++) {for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------image.at<Vec3b>(j, i)[0] = image.at<Vec3b>(j, i)[0] / div * div + div / 2;image.at<Vec3b>(j, i)[1] = image.at<Vec3b>(j, i)[1] / div * div + div / 2;image.at<Vec3b>(j, i)[2] = image.at<Vec3b>(j, i)[2] / div * div + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//----------------------------------【方法十三】-----------------------------------------------
//      说明:利用图像的输入与输出
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels13(const Mat &image,  //输入图像Mat &      result, // 输出图像int         div = 64) {int nl = image.rows; //行数int nc = image.cols; //列数//准备好初始化后的Mat给输出图像result.create(image.rows, image.cols, image.type());//创建无像素填充的图像nc = nc * nl;nl = 1; //单维数组int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g.比如div=16, mask= 0xF0for (int j = 0; j < nl; j++) {uchar *      data = result.ptr<uchar>(j);const uchar *idata = image.ptr<uchar>(j);for (int i = 0; i < nc; i++) {//-------------开始处理每个像素-------------------*data++ = (*idata++) & mask + div / 2;*data++ = (*idata++) & mask + div / 2;*data++ = (*idata++) & mask + div / 2;//-------------结束像素处理------------------------} //单行处理结束}
}//--------------------------------------【方法十四】-------------------------------------------
//      说明:利用操作符重载
//-------------------------------------------------------------------------------------------------
void Samples::AccessPixels14(Mat &image, int div = 64) {int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0));//掩码值uchar mask = 0xFF << n; // e.g. 比如div=16, mask= 0xF0//进行色彩还原image = (image & Scalar(mask, mask, mask)) + Scalar(div / 2, div / 2, div / 2);
}
http://www.khdw.cn/news/63648.html

相关文章:

  • 虚拟网站管理系统怎样做网站
  • 有个做搞笑视频的网站百度小说搜索风云榜总榜
  • 广州公共资源西安seo外包优化
  • php做网站搜索框链接网
  • 栾城住房和城乡建设局网站电商软文范例300字
  • 交友网站的设计与实现网站运营专员
  • 网站建设与维护试卷论文深圳推广公司介绍
  • seo怎么做优化方案seo网站优化系统
  • 成都注册网站公司seo优化排名易下拉效率
  • 网站建设网站制作公司网页设计与制作项目教程
  • 赣州北京网站建设山西seo推广
  • 做网站要搭建本地服务器么色盲测试图
  • 游戏logo设计网站互联网营销师证书含金量
  • 网站建设在哪里办公最新新闻热点
  • 做投资网站百度指数的搜索指数
  • 揭阳市建设局网站自己做网站的流程
  • 合益环保东莞网站建设打广告的免费软件
  • sap.net怎么做网站网站推广外贸
  • 横岗做网站公司网站分析报告
  • 创科手机网站百度知道个人中心
  • 做网站常用哪种语言搜索引擎优化是做什么
  • 广西营销型网站建设公司网络营销主要做些什么
  • 世界球队最新排名榜seo成都培训
  • 优秀的网站建设策划书海外推广营销 平台
  • 做视频网站想用家庭网络谷歌官方网站
  • 网站项目验收谷歌地图下载
  • 怎么做和京东一样网站网站关键字排名优化
  • 滑县住房和城乡建设局网站互联网广告优化
  • 广西政府网站集约化建设方案百度权重是什么
  • 网站做优化是什么意思自媒体发布平台有哪些