美文网首页
图像的简单操作

图像的简单操作

作者: 看风景的人_21744 | 来源:发表于2017-10-20 20:04 被阅读0次

1. 输入/输出

Mat img = imread(filename)  
Mat img = imread(filename, IMREAD_GRAYSCALE);

imwrite(filename, img);

Mat imread(const string& filename, int flags=1 )

  • flag>0,该函数返回 3 通道图像,如果磁盘上的图像文件是单通道的灰
    度图像,则会被强制转为 3 通道;
  • flag=0,该函数返回单通道图像,如果磁盘的图像文件是多通道图像,则
    会被强制转为单通道;
  • flag<0,则函数不对图像进行通道转换。

2. 基础操作

获取像素值

  • 单通道:
    Scalar intensity = img.at<uchar>(x, y),表示x行,y列。从0开始。
    Scalar intensity = img.at<uchar>(Point(x, y)),表示y列,x行。
    img.at<uchar>(y, x) = 128,改变像素值

  • 多通道:

Vec3b intensity = img.at<Vec3b>(y, x);
uchar blue = intensity.val[0];  //intensity[0]
uchar green = intensity.val[1];
uchar red = intensity.val[2];
  • std::vector:
vector<Point2f> points;
//... fill the array
Mat pointsMat = Mat(points);
Point2f point = pointsMat.at<Point2f>(i, 0);

内存调整和引用计数

std::vector<Point3f> points;
// .. fill the array
Mat pointsMat = Mat(points).reshape(1);   //without copying data

基础操作

make a black image from an existing greyscale image img:img = Scalar(0);
选择感兴趣的区域:Rect r(10, 10, 100, 100); Mat smallImg = img(r);
色彩类型变换:

Mat img = imread("image.jpg"); // loading a 8UC3 image
Mat grey;
cvtColor(img, grey, COLOR_BGR2GRAY);

数据类型变换:src.convertTo(dst, CV_32F)

图像展示

Mat img = imread("image.jpg");
Mat grey;
cvtColor(img, grey, COLOR_BGR2GRAY);
Mat sobelx;
Sobel(grey, sobelx, CV_32F, 1, 0);
double minVal, maxVal;
minMaxLoc(sobelx, &minVal, &maxVal); //find minimum and maximum intensities
Mat draw;
sobelx.convertTo(draw, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));
namedWindow("image", WINDOW_AUTOSIZE);
imshow("image", draw);
waitKey(0);

sobelx.convertTo(draw, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal))类型变换,同时范围最大化。一个斜率,一个截距。

相关文章

  • 图像的简单操作

    1. 输入/输出 Mat imread(const string& filename, int flags=1 )...

  • Morphology -形态学操作

    前言 简单的来讲,形态学操作是基于形状的图像处理操作,通过将结构元素作用于输入图像来输出图像。 对图像形态学运算,...

  • imgproce腐蚀膨胀

    形态学操作简单来讲,形态学操作就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。 ...

  • opencv形态学转换

    原理 形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,...

  • 关于MATLAB图像处理基础操作的记录

    一、图像的几何变换 1、图像的平移操作 2、图像的缩放操作 3、图像的旋转操作 4、图像的镜像操作 5、图像的错切...

  • OpenCV图像处理(七)图像滤波(2)

    1、形态学滤波 简单来说,形态学操作就是基于形状的一系列图像处理操作,最基本的形态学操作:膨胀、腐蚀。在图像处理中...

  • 008-Opencv笔记-均值模糊-高斯模糊

    模糊原理 Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低...

  • 形态学操作

    形态学操作 形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始...

  • 用Python自动化生成倒计时图片

    根据书中的「操作图像」章节内容,实现一个简单又实用的小操作。 使用的模块为Pillow,一个处理图像文件的Pyht...

  • OpenCV-Python系列三:图像分割(1)--阈值

    阈值分割是图像处理中非常实用的操作,对我们提取目标区域,使图像信息更加简单(0和1)来加速后续的处理速度。图像阈值...

网友评论

      本文标题:图像的简单操作

      本文链接:https://www.haomeiwen.com/subject/ugsvuxtx.html