第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)教關(guān)于圖片大小不變,怎么把圖片移到中間去,圖片跟框框相切?

請(qǐng)教關(guān)于圖片大小不變,怎么把圖片移到中間去,圖片跟框框相切?

交互式愛情 2023-04-23 21:17:09
#include"cv.h"#include"highgui.h"#include"iostream" using namespace cv;using namespace std;int main(){Mat image=imread("mini.jpg");if(image.empty()){cout<<"read file failure"<<endl;return -1;}Point2f center=Point2f(image.cols/2,image.rows/2);//旋轉(zhuǎn)中心double angle=30;//旋轉(zhuǎn)角度double scale=1;//縮放尺度double degree=angle*CV_PI/180;double a=sin(degree),b=cos(degree);Mat image_rotate;image_rotate.cols= (image.cols*fabs(b)+image.rows*fabs(a));image_rotate.rows=(image.cols*fabs(a)+image.rows*fabs(b));// Point2f center=Point2f(image_rotate.cols/2,image_rotate.rows/2);//也不能把圖像移到中間// float map[6];Mat rotateMat(2,3,CV_32FC1,map);rotateMat=getRotationMatrix2D(center,angle,scale);// map[2]+=(image_rotate.cols-image.cols)/2;//map[5]+=(image_rotate.rows-image.rows)/2;Mat rotateImage;warpAffine(image,rotateImage,rotateMat,image_rotate.size());imwrite("rotate_image.jpg",rotateImage);namedWindow("window",1);imshow("window",rotateImage);waitKey(0);return 0;} //#include"iostream"//#include"cv.h"//#include"highgui.h" //using namespace cv;//using namespace std;//int main()//{//Point2f scrTri[3];//Point2f dsttri[3];//Mat warp_mat(2,3,CV_32FC1);//Mat rot_mat(2,3,CV_32FC1);//Mat scr,warp_dst,warp_rotate_dst;//scr=imread("lena.jpg");//warp_dst=Mat::zeros(scr.type(),scr.cols,scr.rows);//重置為0 //}
查看完整描述

1 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

#include "StdAfx.h"

#include "cv.h"

#include "highgui.h"

#include "math.h"


int main ()

{

IplImage *src = 0;

IplImage *dst = 0;

/* the first command line parameter must be image file name */

if ( (src = cvLoadImage ("d:\\Image\\mini.png", -1)) != 0)

{

int delta = 1;

int angle = 0;

int opt = 0;// 1: 旋轉(zhuǎn)加縮放

// 0:  僅僅旋轉(zhuǎn)

double factor;

dst = cvCloneImage (src);

cvNamedWindow ("src", 1);

cvShowImage ("src", src);

for (;;)

{

float m[6];

// Matrix m looks like:

//

// [ m0  m1  m2 ] ===>  [ A11  A12   b1 ]

// [ m3  m4  m5 ]       [ A21  A22   b2 ]

//

CvMat M = cvMat (2, 3, CV_32F, m);

int w = src->width;

int h = src->height;

if (opt)// 旋轉(zhuǎn)加縮放

factor = (cos (angle * CV_PI / 180.) + 1.0) * 2;

else//  僅僅旋轉(zhuǎn)

factor = 1;

m[0] = (float) (factor * cos (-angle * 2 * CV_PI / 180.));

m[1] = (float) (factor * sin (-angle * 2 * CV_PI / 180.));

m[3] = -m[1];

m[4] = m[0];

// 將旋轉(zhuǎn)中心移至圖像中間

m[2] = w * 0.5f;

m[5] = h * 0.5f;

//  dst(x,y) = A * src(x,y) + b

cvZero (dst);

cvGetQuadrangleSubPix (src, dst, &M);

cvNamedWindow ("dst", 1);

cvShowImage ("dst", dst);

if (cvWaitKey (1) == 27)//ESC

break;

angle = (int) (angle + delta) % 360;

}// for-loop

}

return 0;

}

參考程序如上所述,如果原始圖像大小不變是無法輸出到原始圖像的。

比如你原始圖像為200*200,旋轉(zhuǎn)45度,輸出到一個(gè)200*200的大小的圖像空間里,這個(gè)原始圖片的大小已經(jīng)是原來的一半成了 根2*100*根2*100,你要保證角點(diǎn)相切的話,這個(gè)原始圖像的大小需要根據(jù)旋轉(zhuǎn)角度的大小隨時(shí)改變。

比如旋轉(zhuǎn)45度,先把源圖像變到100*100(我說的源圖像是里面有內(nèi)容的圖像),而你處理的圖像還是200*200的帶著黑框的圖片。

進(jìn)行旋轉(zhuǎn)之后就是切邊緣了。


查看完整回答
反對(duì) 回復(fù) 2023-04-27
  • 1 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)