图像转置的MATLAB和OpenCV源码!
来源:互联网 发布:中国证券网软件下载 编辑:程序博客网 时间:2024/05/21 07:02
注意,图像转置和图像旋转是两回事,图像转置只是把图像的行坐标和列坐标互换,程序实现起来非常简单!而图像旋转则是奖图像旋转多少度!
图像转置的英文为Transpose,而图像旋转的英文为Image Rotation 请注意区别!
下面给出图像转置的MATLAB和OpeCV源码!
源码中用到的图像的下载链接为 http://pan.baidu.com/s/1boKYKFX
首先上MATLAB源码
clear all; close all; clc; A=imread('007_gray.png'); tform=maketform('affine',[0 1 0;1 0 0;0 0 1]);B=imtransform(A,tform,'nearest');%B中存储的是经过水平镜像变换后的图像subplot(1,2,1),imshow(A);title('原图像');subplot(1,2,2),imshow(B);title('图像转置');
再上OpenCV的C源码(不使用MAT类)
#include <opencv2/opencv.hpp> #include <opencv2/legacy/compat.hpp> #include <fstream>using namespace std; #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") void transpose_image(IplImage *src,IplImage *dst) //实现水平镜像变换{int M,N;M=src->height;N=src->width;int i=0,j=0;double temp1;CvScalar s1;for(i=0;i<M;i++){for(j=0;j<N;j++){temp1 = cvGet2D(src,i,j).val[0];s1.val[0]=temp1;cvSet2D(dst,j,i,s1);}}}int main(){int src_height,src_width;IplImage *pSrcImage = cvLoadImage("007_gray.png", CV_LOAD_IMAGE_UNCHANGED); src_height=pSrcImage->height;src_width=pSrcImage->width;CvSize dst_size;dst_size.height=src_width;dst_size.width=src_height;IplImage *pOutImage = cvCreateImage(dst_size, IPL_DEPTH_8U,1);transpose_image(pSrcImage,pOutImage);const char *pstrWindowsATitle = "原图"; const char *pstrWindowsBTitle = "变换后的图"; //创建窗口 cvNamedWindow(pstrWindowsATitle, CV_WINDOW_AUTOSIZE); cvNamedWindow(pstrWindowsBTitle, CV_WINDOW_AUTOSIZE);//在指定窗口中显示图像 cvShowImage(pstrWindowsATitle, pSrcImage); cvShowImage(pstrWindowsBTitle, pOutImage); //等待按键事件 cvWaitKey(); cvDestroyWindow(pstrWindowsATitle); cvDestroyWindow(pstrWindowsBTitle); cvReleaseImage(&pSrcImage); cvReleaseImage(&pOutImage); return 0;}
运行结果如下图所示:
再上OpenCV的C++源码(使用MAT类)
程序中使用到的图片的下载链接:http://pan.baidu.com/s/1dFv2MM9
//OpenCV版本2.4.9 //交流QQ2487872782 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>int main() { cv::Mat srcImage = cv::imread("pool.jpg"); if(!srcImage.data) return -1; // 图像转置cv::Mat resultImage;cv::transpose(srcImage, resultImage);cv::imshow("srcImage", srcImage); cv::imshow("转置后的图像", resultImage); cv::waitKey(0); return 0; }
运行结果如下图所示:
-------------------------------------------
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
0 0
- 图像转置的MATLAB和OpenCV源码!
- 图像旋转的MATLAB和OpenCV源码!
- OpenCv和matlab对图像的读取
- 利用插值的方法对图像进行缩放的MATLAB和OpenCV源码!
- 在MATLAB和OpenCV环境下写的灰度图像分段线性变换源码!
- Matlab读入的图像缘何和OpenCv的不一样?
- 图像滤波:matlab和opencv函数的比较
- 图像数据类型的转换 matlab opencv
- [OpenCV]图像分割之(四)OpenCV的GrabCut函数使用和源码解读
- 小实验~图像在matlab和opencv mat里的存储
- Opencv 和Matlab的不同
- matlab图像算法源码
- 图像处理MATLAB源码
- 图像处理PSNR及其计算(OpenCV和matlab实现)
- 转:OpenCv图像差分源码
- Matlab图像的几何变换之图像转置
- 基于OpenCV实现------图像的转置
- opencv中图像与Matlab中mxArray的转化
- 深入浅出JMS(一)--JMS基本概念
- 阿斯顿发斯蒂芬
- gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
- 架构师之路(3)---架构师的职责
- Javascript变量提升的问题
- 图像转置的MATLAB和OpenCV源码!
- Apache2.2+Tomcat7.0整合配置详解
- Mysql的一些经典命令
- Gradle学习系列之九——自定义Task类型
- react 入门 阮一峰
- 使用sysbench测试磁盘IO
- android 布局
- X265_1.8代码结构
- jQuery最佳实践