OpenCV 计算机视觉(二)掩膜操作

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

using namespace cv;

int main(int argc, char** argv) {
 Mat src, dst;
 src = imread("D:/OpenCVtest/image/hao.jpg");
 if (!src.data) {
    printf("could not load image...\n");
    return -1;
 }
 namedWindow("input image", CV_WINDOW_AUTOSIZE);
 imshow("input image", src);

/*
 int cols = (src.cols-1) * src.channels();
 int offsetx = src.channels();
 int rows = src.rows;

dst = Mat::zeros(src.size(), src.type());
 for (int row = 1; row < (rows - 1); row++) {
    const uchar* previous = src.ptr<uchar>(row - 1);
    const uchar* current = src.ptr<uchar>(row);
    const uchar* next = src.ptr<uchar>(row + 1);
    uchar* output = dst.ptr<uchar>(row);
    for (int col = offsetx; col < cols; col++) {
     output[col] = saturate_cast<uchar>(5 * current[col] - (current[col- offsetx] + current[col+ offsetx] + previous[col] + next[col]));
    }
  }
 */
 double t = getTickCount();
 Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
 filter2D(src, dst, src.depth(), kernel);
 double timeconsume = (getTickCount() - t) / getTickFrequency();
 printf("tim consume %.2f\n", timeconsume);

namedWindow("contrast image demo", CV_WINDOW_AUTOSIZE);
 imshow("contrast image demo", dst);

waitKey(0);
 return 0;
}

原理:

原文地址:https://www.cnblogs.com/haiboxiaobai/p/11140492.html

时间: 2024-11-09 03:06:49

OpenCV 计算机视觉(二)掩膜操作的相关文章

学习Opencv 2.4.9(二) ---操作像素

作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 本质上说一张图像就是由数值组成的矩阵.Opencv 2.x由 cv::Mat 这个数据结构来表示一张图像.矩阵的每一个元素代表了一个像素.对于彩色图像而言矩阵的元素是一个三元数.对图像有了这个新的认识,下面可以试着借助opencv处理图像了. 先来看一下今天要处理的图像: 今天的主题是存取像素,首先来看一下如何存取像素值.其实对于像素值的操作都可以由cv::Mat类中成员直接或间接实现,cv::

opencv(2)掩膜操作

1.掩膜操作 掩膜操作是根据掩膜来重新计算每个像素的值 A[i,j]=5*B[i,j]-(B[i-1,j]+B[i+1,j]+B[i,j-1]+B[i,j+1]); 用上述处理的提高对比度 其他的掩膜可参看https://wenku.baidu.com/view/bc1407d6b14e852458fb57cd.html 2.获取图像的指针 const uchar* d = scr.ptr<uchar>(i); //获取scr内第i行的指针. 3.处理越界的像素 saturate_cast&l

OpenCV 学习(像素操作 Manipuating the Pixels)

OpenCV 学习(像素操作 Manipuating the Pixels) OpenCV 虽然提供了许多类型的图像处理函数,可以对图像进行各种常见的处理,但是总会有些操作时没有的,这时我们就需要自己来操纵像素,实现我们需要的功能.今天就来讲讲 OpenCV 进行像素级操作的几种方法,并做个比较. 在 OpenCV 中,图像用矩阵来表示,对应的数据类型为 cv::Mat . cv::Mat 功能很强大,矩阵的元素可以为字节.字.浮点数.数组等多种形式.对于灰度图像,每个像素用一个 8 bit 字

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa

opencv split和merge操作

opencv split和merge操作 分类: OpenCv2014-05-13 09:38 656人阅读 评论(1) 收藏 举报 [cpp] view plaincopyprint? #include<opencv2/opencv.hpp> #include<iostream> #include<cassert> #include<vector> using namespace cv; using namespace std; int main() {

sk_buff整理笔记(二、操作函数)

承接上一篇:sk_buff整理笔记(一.数据结构)这一篇要讲的是内核为sk_buff结构提供的一些操作函数. 第一.首先要讲的是sk_buff中的四大指针: 四大指针分别是:head.data.tail.end:这四个指针都是指向了数据区的,数据区中存放的是协议头和数据.head和end指针是每个数据包一样的,也是有这两个指针来确定数据区的大小的.最开始的时候head.data.tail三个指针都是指向一起的,当有协议数据加进来时才更改. 再来说下包的形成,首先是应用层的数据,然后到四层加上四层

java: Comparable比较器,定义二叉操作类

//定义二叉操作类 class BinaryTree{ class Node{ private Node left; //左指数 private Node right; //右指数 private Comparable data; public Node(Comparable<?> data) { this.data = data; } //二叉数据比较,大的放在右边,小的放在左边 public void addNode(Node newNode) { //放在左边 if( newNode.d

使用OpenCV查找二值图中最大连通区域

http://blog.csdn.net/shaoxiaohu1/article/details/40272875 使用OpenCV查找二值图中最大连通区域 标签: OpenCVfindCoutours 2014-10-19 22:31 2802人阅读 评论(0) 收藏 举报  分类: 图像与OpenCV(15)  版权声明:本文为shaoxiaohu原创文章,欢迎转载,请注明出处,谢谢. 上一篇博文中介绍了matlab查找最大连通区域的方法,OpenCV函数中也有类似的函数与之对应,findC

OpenCV &mdash;&mdash; 矩阵和图像操作

cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include <highgui.h> int main(int argc,char** argv) { IplImage *s1,*s2; s1=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_COLOR); s2=cvLoadImage("test.