• OpenCV 操作图像的数据区


    OpenCV在图像处理方面跟MATLAB的功能有点相近,提供了一系列图像处理相关的函数,运用的好能极大的加快图像处理相关方面的开发。关于OpenCV的配置网上有很多,随便查一查就可知晓,本文的代码是在VS2013+OpenCV2.4.8的工作环境下进行的,因为变量的名字和使用的方法基本没变,所以同样适用于之前的版本。

    本文主要记录如何用OpenCV来操作图像的数据区,跟之前的记录《C/C++ BMP(24位真彩色)图像处理(1)------图像打开与数据区处理》作用类似,但相对而言因为OpenCV本身内置了许多图像的解码器,用OpenCV来打开图像的适用性更广,之后能保存的图像的格式也更多。


    包含OpenCV头文件

    #include <opencv2/opencv.hpp>  
    using namespace cv;

    操作图像的数据区

    IplImage* img = NULL;//OpenCV图像数据结构指针
    char *filename = "F:\gopicture\2.jpg";//要打开图像的路径
    char *savename = "F:\gopicture\3.jpg";//要存储图像的路径
    img = cvLoadImage(filename, 1);//打开图像,这个过去其实也完成了图像的解码,图像的信息存在 IplImage 指针所指的数据结构中
    uchar* data = (uchar*)(img->imageData);//声明指针指向图像的数据区
    
    for (int row = 0; row<img->height; row++)//操作数据区,要注意OpenCV的RGB的存储顺序为GBR
    	for (int cols = 0; cols<img->width; cols++)//示例为亮度调节
    	{
    		data[row*img->widthStep / sizeof(uchar)+cols*img->nChannels + 0] *= 0.5;//G
    		data[row*img->widthStep / sizeof(uchar)+cols*img->nChannels + 1] *= 0.5;//B
    		data[row*img->widthStep / sizeof(uchar)+cols*img->nChannels + 2] *= 0.5;//R
    	}
    cvSaveImage(savename, img);//存储图像
    cvNamedWindow("show", 1);//创建窗口对象用于显示
    cvShowImage("show", img);//将图像显示在窗口上
    cvReleaseImage(&img);//释放图像数据结构指针对像所指内容




  • 相关阅读:
    mybatis使用Example进行条件查询
    博客园页面DIY
    内网穿透
    使用ResponseEntity进行返回json数据
    spring中的ResponseEntity理解
    springboot整合mybatis通用Mapper
    解决pip安装过慢的问题
    【记录】linux 命令拷贝文件到远程服务器,linux下载文件到本地
    【记录】ELK之logstash同步mysql数据到Elasticsearch ,配置文件详解
    【记录】logstash 命令解释
  • 原文地址:https://www.cnblogs.com/weixinhum/p/3916718.html
Copyright © 2020-2023  润新知