导航:首页 > 编程语言 > pythonopencv旋转

pythonopencv旋转

发布时间:2022-03-30 10:17:26

python用OpenCV转卡通照片报错,好像是pyrdown的使用有问题

你这个是pyrdown函数使用的时候,操作一次一个 M x N 的图像就变成了一个 M/2 x N/2 的图像。像素不是2的整数倍造成pyrup函数使用时像素出现不对等

Ⅱ 如何用opencv python实现图像的局部放大

在opencv_refman里面找下这个函数吧,opencv_refman是opencv函数库里面自带的,可以在opencv路径下搜索下。

Ⅲ python用opencv读取图像如何做格式转换

直接在python中做格式转换
既然知道frame是numpy array格式,当然可以直接做转换,但是在python中进行这种操作非常耗时。笔者测试了一下,转换一张416x416x3的图像大约需要3秒钟。这个速度甚至不如用文件转存的方式。

Ⅳ python matplotlib.pyplot 可以显示opencv、PIL读取的图像,反过来opencv、PIL怎么读取plt包绘制的图像

可以考虑使用plt.savefig()保存图片,再用opencv来读取就好了

Ⅳ 怎样用opencv实现图像的任意角度的旋转

上代码:
//OpenCV 下的图像任意角度的旋转

//需要inter公司的OpenCV的支持.

//OpenCV下的图像任意角度的旋转
//待旋转的图像IplImage* Img_old
//返回的旋转后图像 IplImage* Img_tmp.
//旋转的角度,单位度.
//三种不同的方法.其中方法二没有完全测试,方法一可以满足大部分需要
//Vastsky - Nercita 2005 6 12
//vastsky_sun#126.com
IplImage * CCropMeasureView::FitRotate (IplImage* Img_old, double angle,int method)

{

IplImage* Img_tmp = NULL;

double anglerad = (CV_PI* (angle/180)) ;
int newheight =int (fabs(( sin(anglerad)*Img_old->width )) + fabs(( cos(anglerad)*Img_old->height )) );
int newwidth =int (fabs(( sin(anglerad)*Img_old->height)) + fabs(( cos(anglerad)*Img_old->width)) );

Img_tmp = cvCreateImage(cvSize(newwidth,newheight), IPL_DEPTH_8U, 3);
cvFillImage(Img_tmp,0);//目的图像 使用扩展的大小

IplImage* dst = cvCloneImage( Img_old );//目的图像 与原图像等大

float m[6];
CvMat M = cvMat( 2, 3, CV_32F, m );

if(1==method)
{
//方法一 提取象素四边形,使用子象素精度

int w = Img_old->width;
int h = Img_old->height;

m[0] = (float)(cos(angle*CV_PI/180.));
m[1] = (float)(sin(angle*CV_PI/180.));
m[2] = w*0.5f;
m[3] = -m[1];
m[4] = m[0];
m[5] = h*0.5f;

cvGetQuadrangleSubPix( Img_old, dst, &M, 1, cvScalarAll(0));

cvGetQuadrangleSubPix( Img_old, Img_tmp, &M, CV_INTER_LINEAR, cvScalarAll(0));//+CV_WARP_FILL_OUTLIERS

//方法一 提取象素四边形,使用子象素精度
}

if(2==method)
{
//方法二 使用 二维旋转的仿射变换矩阵 存在问题 要求输入和输出图像一样大 旋转中心不对

CvPoint2D32f center;
center.x=float (Img_old->width/2.0+0.5);//float (Img_tmp->width/2.0+0.5);
center.y=float (Img_old->height/2.0+0.5);//float (Img_tmp->height/2.0+0.5);
cv2DRotationMatrix( center, angle,1, &M);

cvWarpAffine( Img_old, dst, &M,CV_INTER_LINEAR,cvScalarAll(0) );//小图
//小目标图像

//对图像进行扩展
// 只能一定角度以内 不同象限的不同对待
int dx=int((newwidth -Img_old->width )/2+0.5);
int dy=int((newheight-Img_old->height)/2+0.5);

uchar* old_ptr,*temp_ptr;

for( int y=0 ; y<Img_old->height; y++) //为了不越界
{
for (int x=0 ; x< Img_old->width; x++)
{
old_ptr = &((uchar*)(Img_old->imageData + Img_old->widthStep*y))[(x)*3];
temp_ptr = &((uchar*)(Img_tmp->imageData + Img_tmp->widthStep*(y+dy)))[(x+dx)*3];
temp_ptr[0]=old_ptr[0]; //green
temp_ptr[1]=old_ptr[1]; //blue
temp_ptr[2]=old_ptr[2]; //Red
}
}

center.x=float (Img_tmp->width/2.0+0.5);
center.y=float (Img_tmp->height/2.0+0.5);
cv2DRotationMatrix( center, angle,1, &M);

IplImage* temp = cvCloneImage( Img_tmp );//生成输出图像
cvWarpAffine( Img_tmp, temp , &M,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,cvScalarAll(0) );//大图
Img_tmp=cvCloneImage( temp );

//问题
//cvWarpAffine( Img_tmp, Img_tmp, &M,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,cvScalarAll(0) );//大图

Ⅵ opencv有旋转函数吗!

cvMatchShapes() 比的是不同的输入图形的Hu的值的不同。 Hu的意义在于旋转和尺度变换不大,所以叫做不变矩。 其他的比较方法有多边形逼近和更复杂的角点

Ⅶ opencv 图像旋转后的匹配怎么做

代码: //OpenCV 图像任意角度旋转 //需要inter公司OpenCV支持. //OpenCV图像任意角度旋转 //待旋转图像IplImage* Img_old //返旋转图像 IplImage* Img_tmp. //旋转角度,单位度. //三种同.其二没完全测试,满足部需要 //Vastsky - Nercita 二005 陆 一二 //vastsky_sun#一二陆中国 IplImage * CCropMeasureView::FitRotate (IplImage* Img_old, double angle,int method) { IplImage* Img_tmp = NULL; double anglerad = (CV_PI* (angle/一吧0)) ; int newheight =int (fabs(( sin(anglerad)*Img_old->width )) + fabs(( cos(anglerad)*Img_old->height )) ); int newwidth =int (fabs(( sin(anglerad)*Img_old->height)) + fabs(( cos(anglerad)*Img_old->width)) ); Img_tmp = cvCreateImage(cvSize(newwidth,newheight), IPL_DEPTH_吧U, 三); cvFillImage(Img_tmp,0);//目图像 使用扩展 IplImage* dst = cvCloneImage( Img_old );//目图像 与原图像等 float m[陆]; CvMat M = cvMat( 二, 三, CV_三二F, m ); if(一==method) { // 提取象素四边形使用象素精度 int w = Img_old->width; int h = Img_old->height; m[0] = (float)(cos(angle*CV_PI/一吧0.)); m[一] = (float)(sin(angle*CV_PI/一吧0.)); m[二] = w*0.5f; m[三] = -m[一]; m[四] = m[0]; m[5] = h*0.5f; cvGetQuadrangleSubPix( Img_old, dst, &M, 一, cvScalarAll(0)); cvGetQuadrangleSubPix( Img_old, Img_tmp, &M, CV_INTER_LINEAR, cvScalarAll(0));//+CV_WARP_FILL_OUTLIERS // 提取象素四边形使用象素精度 } if(二==method) { //二 使用 二维旋转仿射变换矩阵 存问题 要求输入输图像 旋转 CvPoint二D三二f center; center.x=float (Img_old->width/二.0+0.5);//float (Img_tmp->width/二.0+0.5); center.y=float (Img_old->height/二.0+0.5);//float (Img_tmp->height/二.0+0.5); cv二DRotationMatrix( center, angle,一, &M); cvWarpAffine( Img_old, dst, &M,CV_INTER_LINEAR,cvScalarAll(0) );//图 //目标图像 //图像进行扩展 // 能定角度内 同象限同待 int dx=int((newwidth -Img_old->width )/二+0.5); int dy=int((newheight-Img_old->height)/二+0.5); uchar* old_ptr,*temp_ptr; for( int y=0 ; yheight; y++) //越界 { for (int x=0 ; x Img_old->width; x++) { old_ptr = &((uchar*)(Img_old->imageData + Img_old->widthStep*y))[(x)*三]; temp_ptr = &((uchar*)(Img_tmp->imageData + Img_tmp->widthStep*(y+dy)))[(x+dx)*三]; temp_ptr[0]=old_ptr[0]; //green temp_ptr[一]=old_ptr[一]; //blue temp_ptr[二]=old_ptr[二]; //Red } } center.x=float (Img_tmp->width/二.0+0.5); center.y=float (Img_tmp->height/二.0+0.5); cv二DRotationMatrix( center, angle,一, &M); IplImage* temp = cvCloneImage( Img_tmp );//输图像 cvWarpAffine( Img_tmp, temp , &M,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,cvScalarAll(0) );//图 Img_tmp=cvCloneImage( temp ); //问题 //cvWarpAffine( Img_tmp, Img_tmp, &M,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,cvScalarAll(0) );//

Ⅷ Opencv的refman中,python的用法。

cv2这个中括号的都是可选参数,就是说从dst往后那些参数都可以不用写。
其实和cv那个版本的意思一样,有默认值的。
cv2是version 2了,应该使用新技术,抛弃cv吧。
直接调用cv2.wrapAffine(src, M, dsize)就行了,后面的参数不用写。

阅读全文

与pythonopencv旋转相关的资料

热点内容
优信二手车解压后过户 浏览:62
Windows常用c编译器 浏览:778
关于改善国家网络安全的行政命令 浏览:833
安卓如何下载网易荒野pc服 浏览:654
javainetaddress 浏览:104
苹果4s固件下载完了怎么解压 浏览:1003
命令zpa 浏览:285
python编译器小程序 浏览:944
在app上看视频怎么光线调暗 浏览:540
可以中文解压的解压软件 浏览:593
安卓卸载组件应用怎么安装 浏览:913
使用面向对象编程的方式 浏览:339
程序员项目经理的年终总结范文 浏览:929
内衣的加密设计用来干嘛的 浏览:432
淮安数据加密 浏览:292
魔高一丈指标源码 浏览:982
松下php研究所 浏览:168
c回调java 浏览:401
梦幻端游长安地图互通源码 浏览:746
电脑本地文件如何上传服务器 浏览:313