Opencv2与Opencv1访问像素语法转换
来源:互联网 发布:白金数据漫画 编辑:程序博客网 时间:2024/05/22 11:51
本人比较习惯于Opencv1的代码写法,看了最新一本关于Opencv2写法,虽然原理是一样的但是写法差别是很大的,所以我看了Opencv2访问像素写法后就尝试改变为Opencv1代码写法。
下面代码是网上的:修改图片的对比度与亮度代码如下所示,是使用Opencv2代码写法
Mat image = imread("./6.jpg"); Mat new_image = Mat::zeros( image.size(), image.type() ); /// 初始化 cout << " Basic Linear Transforms " << endl; cout << "-------------------------" << endl; cout << "* Enter the alpha value [1.0-3.0]: "; cin >> alpha; cout << "* Enter the beta value [0-100]: "; cin >> beta; /// 执行运算 new_image(i,j) = alpha*image(i,j) + beta for( int y = 0; y < image.rows; y++ ) { for( int x = 0; x < image.cols; x++ ) { for( int c = 0; c < 3; c++ ) { new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta ); } } } /// 创建窗口 namedWindow("Original Image", 1); namedWindow("New Image", 1); /// 显示图像 imshow("Original Image", image); imshow("New Image", new_image); /// 等待用户按键 waitKey();下面是我根据原理用Opencv1代码写法:
IplImage *src, *dst;src = cvLoadImage("./6.jpg");dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);cvZero(dst);/// 初始化 cout << " Basic Linear Transforms " << endl; cout << "-------------------------" << endl; cout << "* Enter the alpha value [1.0-3.0]: "; cin >> alpha; cout << "* Enter the beta value [0-100]: "; cin >> beta;for( int x = 0; x < src->width ; x++ ) {for( int y = 0; y < src->height; y++ ) { for( int c = 0; c < 3; c++ ) { //new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );((uchar *)(dst->imageData + dst->widthStep * y))[x * 3 + c] = saturate_cast<uchar>(alpha*((uchar *)(src->imageData + src->widthStep * y))[x * 3 + c]+beta); } } }cvNamedWindow("src");cvNamedWindow("dst");cvShowImage("src", src);cvShowImage("dst", dst);cvWaitKey();//销毁窗口与释放内存cvDestroyAllWindows();cvReleaseImage(&src);cvReleaseImage(&dst);return 0;原图与处理好图如下所示:
- Opencv2与Opencv1访问像素语法转换
- Opencv2与opencv1的区别:
- Opencv2与opencv1的区别
- opencv2-用迭代器访问图像像素
- opencv-openCV1.x与openCV2.x的混合使用
- opencv1/opencv2摄像头成像
- OPenCV1.0 与 OPenCV1.2
- OpenCV2 访问各个像素点的方法(图像遍历)
- OPENCV2 访问图像像素值的三种方法
- opencv2-用动态地址计算配合at访问像素
- 学习OpenCV2——访问Mat图像的像素值
- opencv2-用动态地址计算配合at访问像素
- OPENCV2 访问图像像素值的三种方法
- VC6.0+OpenCV1.0与VS2008+OpenCV2.42的共存与配置
- VC6.0+OpenCV1.0与VS2008+OpenCV2.42的共存与配置
- 【opencv】win7 64位系统 opencv1.0与vc6.0配置|opencv2.4.9与vs2012配置
- 从读取图像程序比较opencv1.0与opencv2.0以上版本
- 像素与毫米的转换
- 代码注释
- JVM(Java虚拟机)内存模型
- 换工作的想法
- Java程序如何自动在线升级
- Spring AOP
- Opencv2与Opencv1访问像素语法转换
- java对oracle数据进行备份和还原
- 2013吉林通化邀请赛 1005 GCD and LCM
- 第一篇日志--开始程序员之路
- 简单浮点数除法模拟-hdu-4493-Tutor
- 毕夏钟伟强沧桑战全场泪奔
- python手记(41)
- Fedora 10中图形界面与文本界面的切换
- 无法在Safari中显示pdf