您好,登錄后才能下訂單哦!
本篇內容介紹了“C++怎么實現圖像特效顯示”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
向下掃描就是對圖像進行分塊并延時顯示。
可以通過不斷的改變顯示的roi區域來達到掃描的效果:
void scanning_down(){ //讀取圖片 Mat srcImage, dstImage; srcImage = imread("2.jpg"); imshow("原圖", srcImage); //定義變量 Mat roiImage; int ImageHeigth = srcImage.rows; int ImageWidth = srcImage.cols; namedWindow("向下掃描"); for (int i = 1; i < ImageHeigth; i++) {//步長為1 roiImage = srcImage(Rect(0, 0, ImageWidth, i)); roiImage.copyTo(dstImage); imshow("向下掃描", dstImage); waitKey(5); } waitKey(0);}
動圖
向上,向左,向右掃描顯示同理。
圖像漸顯思路是先記錄下圖像每個像素點的像素值,顯示的時候先將屏幕置黑,將循環顯示圖像n次,n依次為0,1,2,...,256。每一次顯示像素值的n/256倍,從而達到漸顯的效果。
void fade_in()//淡入
{
//讀取圖片
Mat srcImage, dstImage;
srcImage = imread("2.jpg");
dstImage = srcImage.clone();
imshow("原圖", srcImage);
//定義變量
Mat roiImage;
int ImageHeigth = srcImage.rows;
int ImageWidth = srcImage.cols * 3;
namedWindow("圖像漸顯");
for (int n = 1; n < 256; n++) {
for (int i = 0; i < ImageHeigth; i++) {
uchar* data1 = srcImage.ptr<uchar>(i);
uchar* data2 = dstImage.ptr<uchar>(i);
for (int j = 0; j < ImageWidth; j++) {
data2[j] = data1[j] * n / 256;
}
}
imshow("圖像漸顯", dstImage);
waitKey(10);
}
}
動圖
馬賽克顯示是將圖片分為固定大小的小塊,并記錄下所有小塊的左上角坐標,然后隨機將這些小塊顯示出來,就是馬賽克效果。
//圖像馬賽克顯示void mosaic() { //讀取圖片 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("圖像馬賽克顯示"); //存儲每個小塊的首地址并隨機打亂 int step =24;//定義馬賽克邊長(正方形) vector<Point2d> temp; unsigned int mi = 0; //for循環存儲所有節點坐標 for (int x = 0; x < ImageWidth; x = x + step) { for (int y = 0; y < ImageHeigth; y = y + step) { if (x > ImageWidth - step) { x = ImageWidth - step; } if (y > ImageHeigth - step) { y = ImageHeigth - step; } temp.push_back(Point2d(x,y)); mi++; } } random_shuffle(temp.begin(), temp.end());//打亂容器內元素 //for循環顯示每個隨機馬賽克 for (int i = 0; i < mi; i++) { srcImage(Rect(temp[i].x, temp[i].y, step, step)).copyTo(dstImage(Rect(temp[i].x, temp[i].y, step, step))); imshow("圖像馬賽克顯示", dstImage); waitKey(1); } waitKey(0);}
動圖
“C++怎么實現圖像特效顯示”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。