测试opencv2.4.9中Mat3通道图像的灰度值存储方式
来源:互联网 发布:mac截屏的快捷键是什么 编辑:程序博客网 时间:2024/06/06 05:26
简单测试Mat中3通道图像的像素值存储方式
void testChannels(Mat src,Mat &dst,float slope,float intercept){ int M = 0; int N = 0; if(src.empty()){ std::cout<<"Src pic is empty\n"<<std::endl; return; } M = src.rows; N = src.cols; int nn = src.channels(); printf("channel:%d\n",nn); int j = 0; float gray = 0; for(int i = 0;i < M;i++){ for(j = 0; j < N; j++){ uchar tmp = 0; gray = (float)src.at<uchar>(i,j*nn); gray = slope*((float)(1+gray)) + intercept; tmp = saturate_cast<uchar>(gray); dst.at<uchar>(i,j*nn) = tmp; gray = (float)src.at<uchar>(i,j*nn+1); gray = slope*((float)(1+gray)) + intercept; tmp = saturate_cast<uchar>(gray); dst.at<uchar>(i,j*nn+1) = tmp; //gray = (float)src.at<uchar>(i,j*nn+2); //gray = slope*((float)(1+gray)) + intercept; //tmp = saturate_cast<uchar>(gray); //dst.at<uchar>(i,j*nn+2) = tmp; } }}int main( int argc, const char** argv ){printf("ok\n"); Mat image; if( argc != 2) { printf( "No input image file \n" ); return 1; } image = imread( argv[1], 1 ); printf("argc:%d is ok\n",argc); if( !image.data ) { printf( "No image data \n" ); return -1; } Mat resimg; Mat mat2; mat2 = imread( argv[1], 1 ); testChannels(image,mat2,-1,255); //Canny边缘检测 // Canny(image, resimg, 50, 200); //Mat img = imread("box_in_scene.png"); SIFT sift; //实例化SIFT类 vector<KeyPoint> key_points; //特征点 //descriptors为描述符,mascara为掩码矩阵 Mat descriptors, mascara; Mat output_img; //输出图像矩阵 sift(image,mascara,key_points,descriptors); //执行SIFT运算 //在输出图像中绘制特征点 drawKeypoints(image, //输入图像 key_points, //特征点矢量 output_img, //输出图像 Scalar::all(-1), //绘制特征点的颜色,为随机 //以特征点为中心画圆,圆的半径表示特征点的大小,直线表示特征点的方向 DrawMatchesFlags::DRAW_RICH_KEYPOINTS); imwrite("test_output.jpg",output_img); imwrite("out2.jpg",mat2); return 0;}
关键的代码就看中间处理处理像素值的地方
gray = (float)src.at<uchar>(i,j*nn); gray = slope*((float)(1+gray)) + intercept; tmp = saturate_cast<uchar>(gray); dst.at<uchar>(i,j*nn) = tmp;
阅读全文
0 0
- 测试opencv2.4.9中Mat3通道图像的灰度值存储方式
- opencv2灰度图像的变换
- RGB图像中三个通道的每个灰度值的像素个数
- 图像灰度化的方式
- Matlab中以三维的方式显示灰度图像
- OpenCV2实现在图像中写入汉字,支持单通道、3通道图像
- RGB图像之灰度级和通道的理解
- 3通道图像RGB值读取和灰度图像灰度值读取
- MATLAB实现3通道的真彩图像转换成2通道的灰度图像
- OpenCV 读取灰度图像的灰度值
- OpenCv 如何对图像的像素进行操作(注意多通道图像在内存中的存储方式!!)
- 图像灰度值的计算
- 图像灰度值的概念
- 图像的灰度级差值
- 对于灰度图像中同一个像素,MATLAB和Photoshop的灰度值不同
- 图像处理opencv2-灰度直方图以及灰度直方图均衡化
- opencv中图像的通道的解释
- MATLAB中绘制灰度图像的直方图
- 浅谈我的高考到程序员的生涯
- 使用 rqt_console 和 roslaunch(八)
- Java中使用Jedis操作Redis
- Java基础教程16-String的基本用法
- [leetcode]: 605. Can Place Flowers
- 测试opencv2.4.9中Mat3通道图像的灰度值存储方式
- 16级C++课程设计 题目1 “高校人员信息管理系统设计”
- raspberry系统安装
- Linux(C/C++)下的文件操作open、fopen与freopen
- linux应用编程--思维导图
- 设计模式—组合模式(十五)
- Selenium怒怼知乎IDF教主
- 使用android studio时避免每次启动都进行网络gradle sync的方法
- storm笔记:Trident状态