本篇內(nèi)容主要講解“C++怎么實現(xiàn)圖像的平移”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“C++怎么實現(xiàn)圖像的平移”吧!
我們是2013年至今的成都網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè),電商網(wǎng)站設(shè)計開發(fā),成都外貿(mào)網(wǎng)站建設(shè)公司,響應(yīng)式網(wǎng)頁設(shè)計,微信小程序、等服務(wù)。為客戶創(chuàng)造有價值的品牌營銷體驗,讓互聯(lián)網(wǎng)提升企業(yè)的競爭力!
移動是將圖像看作一個整體,顯示時不能像掃描那樣,掃描方式有些像打開一副畫,例如顯示上部分的時候,下部分可以不現(xiàn)實,而移動則可以看成一塊木板畫,顯示時必須按物理順序進行,例如從上向下平移時,必須先顯示下面的圖像,后顯示上面的圖像,因此平移的算法比掃描難一些。
平移是一復(fù)制的方法顯示圖像的,每顯示一次,復(fù)制的行數(shù)就增加一行,直至顯示完成。
//移動顯示void Mobile_display(){ //讀取圖片 Mat srcImage, dstImage; srcImage = imread("2.jpg"); dstImage = Mat(srcImage.size(), CV_8UC3); imshow("原圖", srcImage); //定義變量 Mat roiImage; int ImageHeigth = srcImage.rows; int ImageWidth = srcImage.cols; namedWindow("移動顯示"); for (int i = 1; i < ImageWidth; i++) {//步長為1 roiImage = srcImage(Rect(ImageWidth-i, 0, i, ImageHeigth)); roiImage.copyTo(dstImage(Rect(0, 0, i, ImageHeigth))); imshow("移動顯示", dstImage); waitKey(5); } waitKey(0);}
動圖
當我們打開電視機時,都有這樣的感覺:電視圖像是從屏幕中間開始,向上下兩個方向展開的,這種效果就是中間擴張。中間擴張?zhí)匦э@示的原理其實并不難,在顯示的時候,先將圖像分成兩部分,將中間分界處顯示在屏幕中央,并快速向上向下掃描圖像,最后將圖像完整的顯示在屏幕上,這樣人們因為視覺生理的特點就會看到中間擴張的效果。
//中間擴張
void Middle_expansion()
{
//讀取圖片
Mat srcImage, dstImage;
srcImage = imread("2.jpg");
dstImage = Mat(srcImage.size(), CV_8UC3);
imshow("原圖", srcImage);
//定義變量
Mat roiImage;
int ImageHeigth = srcImage.rows;
int ImageWidth = srcImage.cols;
namedWindow("中間擴張");
for (int i = 1; i <= ImageHeigth/2; i++) {//步長為1
roiImage = srcImage(Rect(0, ImageHeigth / 2 - i, ImageWidth, i));
roiImage.copyTo(dstImage(Rect(0, ImageHeigth / 2 - i, ImageWidth, i)));
roiImage = srcImage(Rect(0, ImageHeigth / 2, ImageWidth, i));
roiImage.copyTo(dstImage(Rect(0, ImageHeigth / 2, ImageWidth, i)));
imshow("中間擴張", dstImage);
waitKey(5);
}
waitKey(0);
}
動圖
柵條特效分為水平柵條和垂直柵條,其效果如同將兩手交叉的過程,柵條顯示的原理是先將圖像分為若干行,將奇數(shù)行組成一組,偶數(shù)行組成一組,在顯示時奇數(shù)行從右向左平移,偶數(shù)行從左向右平移。
//水平柵條特效
void Grid_effect()
{
//讀取圖片
Mat srcImage, dstImage;
srcImage = imread("2.jpg");
dstImage = Mat(srcImage.size(), CV_8UC3);
imshow("原圖", srcImage);
//定義變量
Mat roiImage;
int ImageHeigth = srcImage.rows;
int ImageWidth = srcImage.cols;
int step=10;//每個柵格寬度
namedWindow("中間擴張");
for (int i = 1; i < ImageWidth+1; i=i+10) {//步長為1
for (int j = 0; j < ImageHeigth; j=j+2*step) {//步長為1
//奇數(shù)行從右往左
roiImage = srcImage(Rect(0, j, i, step));
roiImage.copyTo(dstImage(Rect(ImageWidth - i, j, i, step)));
//偶數(shù)行從左往右
int k = j + step;
roiImage = srcImage(Rect(ImageWidth - i, k, i, step));
roiImage.copyTo(dstImage(Rect(0, k, i, step)));
imshow("中間擴張", dstImage);
waitKey(1);
}
}
waitKey(0);
}
動圖
到此,相信大家對“C++怎么實現(xiàn)圖像的平移”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站標題:C++怎么實現(xiàn)圖像的平移
文章鏈接:http://muchs.cn/article28/gddsjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、企業(yè)網(wǎng)站制作、軟件開發(fā)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)