圖像特效顯示 | 水平柵條特效等
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

上篇文講了圖像特效顯示之掃描顯示,圖像漸顯與馬賽克顯示。本文繼續(xù)。
移動(dòng)是將圖像看作一個(gè)整體,顯示時(shí)不能像掃描那樣,掃描方式有些像打開一副畫,例如顯示上部分的時(shí)候,下部分可以不現(xiàn)實(shí),而移動(dòng)則可以看成一塊木板畫,顯示時(shí)必須按物理順序進(jìn)行,例如從上向下平移時(shí),必須先顯示下面的圖像,后顯示上面的圖像,因此平移的算法比掃描難一些。
平移是一復(fù)制的方法顯示圖像的,每顯示一次,復(fù)制的行數(shù)就增加一行,直至顯示完成。
//移動(dòng)顯示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("移動(dòng)顯示");for (int i = 1; i < ImageWidth; i++) {//步長為1roiImage = srcImage(Rect(ImageWidth-i, 0, i, ImageHeigth));roiImage.copyTo(dstImage(Rect(0, 0, i, ImageHeigth)));imshow("移動(dòng)顯示", dstImage);waitKey(5);}waitKey(0);}
動(dòng)圖

當(dāng)我們打開電視機(jī)時(shí),都有這樣的感覺:電視圖像是從屏幕中間開始,向上下兩個(gè)方向展開的,這種效果就是中間擴(kuò)張。中間擴(kuò)張?zhí)匦э@示的原理其實(shí)并不難,在顯示的時(shí)候,先將圖像分成兩部分,將中間分界處顯示在屏幕中央,并快速向上向下掃描圖像,最后將圖像完整的顯示在屏幕上,這樣人們因?yàn)橐曈X生理的特點(diǎn)就會(huì)看到中間擴(kuò)張的效果。
//中間擴(kuò)張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("中間擴(kuò)張");for (int i = 1; i <= ImageHeigth/2; i++) {//步長為1roiImage = 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("中間擴(kuò)張", dstImage);waitKey(5);}waitKey(0);}
動(dòng)圖
柵條特效分為水平柵條和垂直柵條,其效果如同將兩手交叉的過程,柵條顯示的原理是先將圖像分為若干行,將奇數(shù)行組成一組,偶數(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;//每個(gè)柵格寬度namedWindow("中間擴(kuò)張");for (int i = 1; i < ImageWidth+1; i=i+10) {//步長為1for (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("中間擴(kuò)張", dstImage);waitKey(1);}}waitKey(0);}
動(dòng)圖

圖像特效顯示就到這兒了,比較簡單,也沒太大實(shí)際用途,主要是增強(qiáng)一下對(duì)圖像操作的熟練度。
好消息,小白學(xué)視覺團(tuán)隊(duì)的知識(shí)星球開通啦,為了感謝大家的支持與厚愛,團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!

交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

