zoukankan      html  css  js  c++  java
  • openCV

    加载 cv::imread 修改 cv::cvtColor 保存 cv::imwrite

    加载图像cv::imread

    • imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称
    • 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值
    • IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变
    • IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来
    • IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来

    注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载

    显示图像cv::namedWindos与cv::imshow

    • namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它
    • 常见用法namedWindow("Window Title", WINDOW_AUTOSIZE)
    • WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
    • WINDOW_NORMAL跟QT集成的时候会使用,允许修改窗口大小。
    • imshow根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象

    保存图像 cv::imwrite

    • 保存图像文件到指定目录路径
    • 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
    • 保存PNG格式的时候可以保存透明通道的图片
    • 可以指定压缩参数

    代码演示

    #include<opencv2opencv.hpp>
    #include<highgui.h>
    
    using namespace cv; // 使用命名空间
    
    int main(int argc, char** argv)
    {
    	// read image
    	Mat image = imread("test.jpg");
    
    	// 对图像进行所有像素用 (255- 像素值)
    	Mat invertImage;
    	image.copyTo(invertImage);
    
    	// 获取图像宽、高
    	int channels = image.channels();
    	int rows = image.rows;
    	int cols = image.cols * channels;
    	if (image.isContinuous()) {
    		cols *= rows;         
    		rows = 1;
    	}
    
    	// 每个像素点的每个通道255取反
    	uchar* p1;
    	uchar* p2;
    	for (int row = 0; row < rows; row++) {
    		p1 = image.ptr<uchar>(row);// 获取像素指针
    		p2 = invertImage.ptr<uchar>(row);
    		for (int col = 0; col < cols; col++) {
    			*p2 = 255 - *p1; // 取反
    			p2++;
    			p1++;
    		}
    	}
    
    	// create windows
    	namedWindow("My Test", CV_WINDOW_AUTOSIZE);
    	namedWindow("My Invert Image", CV_WINDOW_AUTOSIZE);
    
    	// display image
    	imshow("My Test", image);
    	imshow("My Invert Image", invertImage);
    
    	// 关闭
    	waitKey(0);
    	destroyWindow("My Test");
    	destroyWindow("My Invert Image");
    	return 0;
    }
    
  • 相关阅读:
    flask框架的使用
    git的基本使用
    pycharm连接数据库以及遇到的问题
    Git原理与Git命令大全
    git使用
    Redis 数据库
    ATM项目
    跨域问题及解决方案
    django的信号
    django的缓存机制
  • 原文地址:https://www.cnblogs.com/coderzjz/p/13179753.html
Copyright © 2011-2022 走看看