#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc,char** argv)
{
  Mat img1, img2,img3,img1_1;
  img1 = imread("D://images//4.jpg");
  if (img1.empty())
  {
    cout <<"could not load images......" << endl;
    return 0;
  }

  namedWindow("win1",CV_WINDOW_AUTOSIZE);
  imshow("win1",img1);
  img1.copyTo(img1_1);
  //namedWindow("win1_1", CV_WINDOW_AUTOSIZE);
  //imshow("win1_1", img1_1);

  cvtColor(img1,img2,CV_BGR2GRAY);
  namedWindow("win2", CV_WINDOW_AUTOSIZE);
  imshow("win2", img2);

  int height = img2.rows;
  int width = img2.cols;

  for (int row=0;row<height;row++)
  {
    for (int col=0;col<width;col++)
    {
      int px_value = img2.at<uchar>(row,col);
      //cout << px_value<< endl;
      img2.at<uchar>(row, col) = 255 - px_value;
    }
  }

  namedWindow("win3", CV_WINDOW_AUTOSIZE);
  imshow("win3", img2);

  img3.create(img1_1.size(), img1_1.type());
  int height_3 = img1_1.rows;
  int widht_3 = img1_1.cols;
  int channels_3 = img1_1.channels();

  /*
  for (int row = 0; row < height_3; row++)
  {
    for (int col=0;col<widht_3;col++)
    {
      if (channels_3==1)
      {
        int px_value = img1_1.at<uchar>(row,col);
        img1_1.at<uchar>(row, col) = 255 - px_value;
      }
      else if (channels_3==3)
      {
        int b = img3.at<Vec3b>(row, col)[0];
        int g = img3.at<Vec3b>(row, col)[1];
        int r = img3.at<Vec3b>(row,col)[2];

        img3.at<Vec3b>(row, col)[0] = 255 - b;
        img3.at<Vec3b>(row, col)[1] = 255 - g;
        img3.at<Vec3b>(row, col)[2] = 255 - r;
      }
    }
  }
  */

  bitwise_not(img1_1,img3);

  namedWindow("win4", CV_WINDOW_AUTOSIZE);
  imshow("win4", img3);

  waitKey(0);
  return 0;
}

Opencv图像变成灰度图像、取反图像的更多相关文章

  1. OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  2. OpenCV学习笔记:如何扫描图像、利用查找表和计时

    目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...

  3. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...

  4. OpenCV学习笔记(七) 图像金字塔 阈值 边界

    转自: OpenCV 教程 使用 图像金字塔 进行缩放 图像金字塔是视觉运用中广泛采用的一项技术.一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到 ...

  5. 深入学习OpenCV中图像灰度化原理,图像相似度的算法

    最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...

  6. OpenCV计算机视觉学习(2)——图像算术运算 & 掩膜mask操作(数值计算,图像融合,边界填充)

    在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...

  7. OpenCV计算机视觉学习(8)——图像轮廓处理(轮廓绘制,轮廓检索,轮廓填充,轮廓近似)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...

  8. OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...

  9. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

随机推荐

  1. GitHub Blog创建以及本地管理

    创建 注册GitHub账户 首页点击新建仓库 New repository repository name必须为 Owner.github.io EX:我的Owner下为pualus,那么就应为pua ...

  2. phpcms v9 tags调用方法

    {loop $keywords $keyword} <a href="{APP_PATH}index.php?m=content&c=tag&catid={$catid ...

  3. typedeifn typename

    1.类型说明typedef 类型说明的格式为: typedef  类型 定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型.定义名表示这个类型的新名字. 例如: 用下面语句定义整 ...

  4. 解决Maven报Plugin execution not covered by lifecycle configuration问题

    问题: 在eclipse neon 中引入maven项目时,弹出两个错误,一个是jacco-maven-plugin,一个是项目中的插件ota-schema-plugin 如果忽略这两个错误,点击fi ...

  5. Django工程目录结构优化

    1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...

  6. Vant async-validator 表单校验

    感谢:尤大大的 vue.有赞的 vant.async-validator.以及 asseek 链接:https://www.jianshu.com/p/d58fe749b97f 在下不才在 assee ...

  7. git身份验证失败清除密码缓存

    git config --system --unset credential.helper

  8. jquery 实现点击颜色切换

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. 使用Revel(go)开发网站(全面版)

    Revel很好的利用了Go语言的goroutine,把每一个request都分配到了goroutine里.不用再写一大堆的回调.如果你写过nodejs的话就会深刻的体会到callback hell是什 ...

  10. 1023 Have Fun with Numbers

    题意: 给定一个正整数(最多有20位),假设这个数是a1a2a3...ak,把这个数乘以2倍,看得到的结果是否仍然是a1a2a3...ak的一个排列    思路: 大整数与int型整数的乘法:简单哈希 ...