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

响水企业做网站多少钱表情生成器在线制作gif

响水企业做网站多少钱,表情生成器在线制作gif,直播盒子,中文域名注册网站一、知识点 1、在OpenCV中&#xff0c;一切图像皆Mat。 2、对图像像素的读写操作&#xff0c;就是对Mat元素的遍历与访问。 3、对Mat使用数组方式遍历与访问。 (1)、函数声明: template<typename _Tp> inline_Tp & Mat::at(int i0, int i1) (2)、参数说明:…


一、知识点
1、在OpenCV中,一切图像皆Mat。

2、对图像像素的读写操作,就是对Mat元素的遍历与访问。

3、对Mat使用数组方式遍历与访问。
  (1)、函数声明:
     

      template<typename _Tp> inline_Tp & Mat::at(int i0, int i1)


  (2)、参数说明:
      i0: 行索引。 从0开始,应小于image.rows。
      i1: 列索引。 从0开始,应小于image.cols。
      _Tp: 函数模板的类型参数,表示一个像素的数据类型。
  (3)、返回i0行i1列的元素引用,返回值是_Tp &,说明对返回值可读可写,可写会影响原始数据。
  (4)、灰度图像的遍历与访问举例:
     

      for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){if (c == 1){//读int pv = image.at<uchar>(row, col);//写image.at<uchar>(row, col) = 255 - pv;}}}


  (5)、彩色图像的遍历与访问举例:
   

      for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){if (c == 3){//读cv::Vec3b bgr = image.at<cv::Vec3b>(row, col);//写image.at<cv::Vec3b>(row, col)[0] = 255 - bgr[0];image.at<cv::Vec3b>(row, col)[1] = 255 - bgr[1];image.at<cv::Vec3b>(row, col)[2] = 255 - bgr[2];}}}


      
4、对Mat使用指针方式遍历与访问。
  (1)、函数声明:
   

      template<typename _Tp> inline_Tp * Mat::ptr(int y)


  (2)、参数说明:
      y: 行索引。 从0开始,应小于image.rows。
      _Tp: 函数模板的类型参数,表示返回的指针指向的数据类型,通常是一个像素的数据类型。
  (3)、返回y行首个_Tp类型数据的地址,返回值是_Tp *,说明对返回值可读可写,可写会影响原始数据。
  (4)、灰度图像的遍历与访问举例:
     

      for (int row = 0; row < h; row++){//返回row行首个元素的地址uchar * cur_row = image.ptr<uchar>(row);for (int col = 0; col < w; col++){if (c == 1){int pv = *cur_row;*cur_row = 255 - pv;cur_row++;}}}


  (5)、彩色图像的遍历与访问举例:
   

      for (int row = 0; row < h; row++){//返回row行首个元素的首个字节地址uchar * cur_row = image.ptr<uchar>(row);for (int col = 0; col < w; col++){if (c == 3){int pv1 = *cur_row;*cur_row = 255 - pv1;cur_row++;int pv2 = *cur_row;*cur_row = 255 - pv2;cur_row++;int pv3 = *cur_row;*cur_row = 255 - pv3;cur_row++;}}}


      
5、对Mat使用指针方式遍历与访问2。
  (1)、函数声明:
     

      template<typename _Tp> inline_Tp * Mat::ptr(int i0, int i1)


  (2)、参数说明:
      i0: 行索引。 从0开始,应小于image.rows。
      i1: 列索引。 从0开始,应小于image.cols。
      _Tp: 函数模板的类型参数,表示一个像素的数据类型。
  (3)、返回i0行i1列的元素地址,返回值是_Tp *,说明对返回值可读可写,可写会影响原始数据。
  (4)、灰度图像的遍历与访问举例:
     

      for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){if (c == 1){uchar * pv = image.ptr<uchar>(row, col);*pv = 255 - *pv;}}}


  (5)、彩色图像的遍历与访问举例:
     

      for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){if (c == 3){cv::Vec3b * pv = image.ptr<cv::Vec3b>(row, col);*pv = cv::Vec3b(255 - (*pv)[0], 255 - (*pv)[1], 255 - (*pv)[2]);}}}


       
      
二、示例代码:

#include <iostream>
#include <opencv2/opencv.hpp>void visit_by_array(cv::Mat & image)
{int w = image.cols;int h = image.rows;int c = image.channels();for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){//灰度图像if (c == 1){//读int pv = image.at<uchar>(row, col);//写image.at<uchar>(row, col) = 255 - pv;}//彩色图像else if (c == 3){//读cv::Vec3b bgr = image.at<cv::Vec3b>(row, col);//写image.at<cv::Vec3b>(row, col)[0] = 255 - bgr[0];image.at<cv::Vec3b>(row, col)[1] = 255 - bgr[1];image.at<cv::Vec3b>(row, col)[2] = 255 - bgr[2];}}}
}void visit_by_pointer(cv::Mat & image)
{int w = image.cols;int h = image.rows;int c = image.channels();for (int row = 0; row < h; row++){uchar * cur_row = image.ptr<uchar>(row);for (int col = 0; col < w; col++){//灰度图像if (c == 1){//读int pv = *cur_row;//写*cur_row = 255 - pv;cur_row++;}//彩色图像else if (c == 3){//读int pv1 = *cur_row;//写*cur_row = 255 - pv1;cur_row++;//读int pv2 = *cur_row;//写*cur_row = 255 - pv2;cur_row++;//读int pv3 = *cur_row;//写*cur_row = 255 - pv3;cur_row++;}}}
}void visit_by_pointer2(cv::Mat & image)
{int w = image.cols;int h = image.rows;int c = image.channels();for (int row = 0; row < h; row++){for (int col = 0; col < w; col++){if (c == 1){uchar * pv = image.ptr<uchar>(row, col);*pv = 255 - *pv;}else if (c == 3){cv::Vec3b * pv = image.ptr<cv::Vec3b>(row, col);*pv = cv::Vec3b(255 - (*pv)[0], 255 - (*pv)[1], 255 - (*pv)[2]);}}}
}int main()
{//数组方式访问灰度图像cv::Mat m1 = cv::imread("../images/1.png", cv::IMREAD_GRAYSCALE);if (m1.empty()){std::cout << "load m1 error..." << std::endl;return -1;}cv::imshow("数组方式访问前 m1", m1);visit_by_array(m1);cv::imshow("数组方式访问后 m1", m1);//数组方式访问彩色图像cv::Mat m2 = cv::imread("../images/1.png", cv::IMREAD_COLOR_BGR);if (m2.empty()){std::cout << "load m2 error..." << std::endl;return -1;}cv::imshow("数组方式访问前 m2", m2);visit_by_array(m2);cv::imshow("数组方式访问后 m2", m2);//指针方式1访问灰度图像cv::Mat m3 = cv::imread("../images/2.png", cv::IMREAD_GRAYSCALE);if (m3.empty()){std::cout << "load m3 error..." << std::endl;return -1;}cv::imshow("指针方式1访问前 m3", m3);visit_by_pointer(m3);cv::imshow("指针方式1访问后 m3", m3);//指针方式1访问彩色图像cv::Mat m4 = cv::imread("../images/2.png", cv::IMREAD_COLOR_BGR);if (m4.empty()){std::cout << "load m4 error..." << std::endl;return -1;}cv::imshow("指针方式1访问前 m4", m4);visit_by_pointer(m4);cv::imshow("指针方式1访问后 m4", m4);//指针方式2访问灰度图像cv::Mat m5 = cv::imread("../images/3.png", cv::IMREAD_GRAYSCALE);if (m5.empty()){std::cout << "load m5 error..." << std::endl;return -1;}cv::imshow("指针方式2访问前 m5", m5);visit_by_pointer2(m5);cv::imshow("指针方式2访问后 m5", m5);//指针方式2访问彩色图像cv::Mat m6 = cv::imread("../images/3.png", cv::IMREAD_COLOR_BGR);if (m6.empty()){std::cout << "load m6 error..." << std::endl;return -1;}cv::imshow("指针方式2访问前 m6", m6);visit_by_pointer2(m6);cv::imshow("指针方式2访问后 m6", m6);cv::waitKey(0);return 0;
}


文章转载自:

http://QxxbmYXU.Lhhkp.cn
http://SvGTGhgj.Lhhkp.cn
http://eJwfXGBH.Lhhkp.cn
http://2tpRXHrt.Lhhkp.cn
http://7tfvXhDL.Lhhkp.cn
http://ZwSZMAAW.Lhhkp.cn
http://id6wVovU.Lhhkp.cn
http://KEYp4vr6.Lhhkp.cn
http://UfyqqR4u.Lhhkp.cn
http://ej8ry93w.Lhhkp.cn
http://DBDRf283.Lhhkp.cn
http://jLyu6srV.Lhhkp.cn
http://68qbjRml.Lhhkp.cn
http://g6nImQzU.Lhhkp.cn
http://NDADSBgS.Lhhkp.cn
http://RHKSDR7q.Lhhkp.cn
http://aE7R5ree.Lhhkp.cn
http://r8L1HWZ6.Lhhkp.cn
http://j1aGjsuj.Lhhkp.cn
http://MTKn7vKE.Lhhkp.cn
http://oH0PhCO8.Lhhkp.cn
http://usuleDdx.Lhhkp.cn
http://FHDlpUnJ.Lhhkp.cn
http://xk1Fw9Ql.Lhhkp.cn
http://zKXWom4a.Lhhkp.cn
http://veu7RpRF.Lhhkp.cn
http://vTfWVNTL.Lhhkp.cn
http://wlaF5cxJ.Lhhkp.cn
http://BJgUm4mh.Lhhkp.cn
http://dbzJBdbT.Lhhkp.cn
http://www.dtcms.com/wzjs/664656.html

相关文章:

  • 网站系统免费wordpress 网站静态页面
  • phpcms v9 网站搬家英国进出口贸易公司简介
  • 网站开发主管重庆南坪网站建设公司
  • 做外贸网站基本流程wordpress侧边悬浮联系方式插件
  • 淘宝联盟怎么自己做网站网站建设辶首选金手指十五
  • 创意网站页面平面设计公司属于什么行业类别
  • 南阳微网站建设网站建设需申请注册域名
  • 漳州市城乡和住房建设局网站网站排名软件优化
  • 专门做课件的网站有哪个网站做正品港货
  • 最有性价比的网站建设网站素材包括哪些
  • 盘锦做网站专家网站图片分辨率尺寸
  • 做博客网站用什么模板镇江网页设计工作室
  • 张家港网站开发设计素材网站会员哪个最好
  • 模板的网站都有哪些php装修网站源码
  • 网站开发的论文引言安全员怎么网站中做备案
  • 网站内容设计遵循的原则有一站式网络推广服务
  • 网站建设流程分为三个步骤怎么建立自己的微信商城
  • 网站开发注意wordpress替换默认页脚代码
  • 芜湖建设机械网站网站原型设计
  • 找个可以直接看的网站天津外贸网络推广
  • 有网站怎么做下载直链wordpress如何搬站
  • 图片点击切换网站模板大型门户网站建设功能
  • 石碣做网站优化男生女生做污事网站 localhost
  • 珠海网站开发维护科技公司温州网页设计培训
  • 网站中页面模板设计提供网站设计方案公司
  • 哪里网站建设联系网络营销渠道策略有哪些
  • 嘉兴网站建设服务手机网页版传奇
  • 做公装的什么网站好双控机制建设网站
  • 东营网站建设报价wordpress vaptcha
  • 企业手机端网站模板下载建设电动三轮车官方网站