Opencv图像变成灰度图像、取反图像
#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图像变成灰度图像、取反图像的更多相关文章
- OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...
- OpenCV学习笔记(七) 图像金字塔 阈值 边界
转自: OpenCV 教程 使用 图像金字塔 进行缩放 图像金字塔是视觉运用中广泛采用的一项技术.一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到 ...
- 深入学习OpenCV中图像灰度化原理,图像相似度的算法
最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜 ...
- OpenCV计算机视觉学习(2)——图像算术运算 & 掩膜mask操作(数值计算,图像融合,边界填充)
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...
- OpenCV计算机视觉学习(8)——图像轮廓处理(轮廓绘制,轮廓检索,轮廓填充,轮廓近似)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
随机推荐
- MFC中控制Tips的显示 - lingyun1120
from: http://www.cnblogs.com/lingyun1120/archive/2011/11/09/2243279.html MFC中为ToolTips生成了一个类CToolTi ...
- session不一定非得要cookie开启才能使用。也可以使用get传递参数
session不一定非得要cookie开启才能使用.也可以使用get传递参数 可以将session_id();设置为一个常量. define(’s_id‘ ,$_COOKIE['session_nam ...
- HDU - 6395:Sequence (分块+矩阵)
题面太丑了,就不复制了. 题意:F1=A: F2=B: Fn=D*Fn-1+C*Fn-2+P/i:求Fn. 思路:根据P/i的值划分区间,每个区间矩阵求. 带常数的矩阵: #include<bi ...
- ehchache和redis
Ehcache 在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apa ...
- vue前端开发那些事——后端接口.net core web api
红花还得绿叶陪衬.vue前端开发离不开数据,这数据正来源于请求web api.为什么采用.net core web api呢?因为考虑到跨平台部署的问题.即使眼下部署到window平台,那以后也可以部 ...
- json数据格式字符串在java中的转移
说明:项目中遇到请求的json数据字符串,打印出来没有问题,但是想加入到代码中,就需要进行转移 原数据为(用src代替)(没有写完): {"adjust_fee":"0. ...
- Java 引用类型变量的声明和使用
引用类型变量的声明和使用 (1)把类名当作是一种类型来声明变量,这种变量叫引用类型变量.如:People people; (2)引用类型变量保存对象的“引用”,即对象的地址. (3)对象的创建 new ...
- swift 学习-- 元组
//元组 //定义:元组是有多个值组合而成的复合值,其中的值可以是任意类型,而且每一个元素的类型可以是不同的 let http404Error = (404, "Not Found" ...
- RecyclerView(滚动控件)的用法
1.首先在build.gradle中添加依赖库 compile 'com.android.support:recyclerview-v7:24.2.1' 2.修改activity_main.xml & ...
- 1097 Deduplication on a Linked List
题意: 给出一个链表,删除绝对值相同的结点,对于每个绝对值为K的结点,只保留第一次出现的那个.把被移除的结点组成一个新链表,输出删除去重后的链表和新链表. 思路:考察链表的“删除”操作,不难. 代码: ...