Danh mục

Trộn ảnh

Số trang: 2      Loại file: pdf      Dung lượng: 91.02 KB      Lượt xem: 14      Lượt tải: 0    
10.10.2023

Hỗ trợ phí lưu trữ khi tải xuống: miễn phí Tải xuống file đầy đủ (2 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trộn ảnh là hiệu ứng rất bắt mắt, nhưng lại rất dễ thực hiện. Ảnh dưới là Baboon và Lenna trộn với nhau, trông rất ấn tượng, có thể mang đi quảng cáo phim King Kong phải không ạ!Nếu biết cách trộn 2 pixel, ta sẽ biết cách trộn 2 ảnh. Đối với ảnh grayscale, công thức để trộn 2 pixel như sau: i = r*i1 + (1 - r)*i2 Trong đó i1 và i2 là độ xám (intensity) của 2 pixel, r là số từ 0 đến 1. Mở rộng công thức này, ta có thể trộn ảnh màu,...
Nội dung trích xuất từ tài liệu:
Trộn ảnhTrộn ảnh Trộn ảnh là hiệu ứng rất bắt mắt, nhưng lại rất dễ thực hiện. Ảnh dưới là Baboon và Lenna trộn với nhau, trông rất ấn tượng, có thể mang đi quảng cáo phim King Kong phải không ạ!Nếu biết cách trộn 2 pixel, ta sẽ biết cách trộn 2 ảnh. Đối với ảnh grayscale, công thức để trộn 2 pixel như sau:i = r*i1 + (1 - r)*i2Trong đó i1 và i2 là độ xám (intensity) của 2 pixel, r là số từ 0 đến 1. Mở rộng công thức này, ta có thể trộn ảnhmàu, thậm chí 3, 4 ảnh với nhau.Dưới đây là chương trình mẫu, sử dụng thư viện OpenCV.#include #include #include #define FILE_NAME1 baboon.jpg#define FILE_NAME2 lenna.jpg#define WINDOW_NAME OutputIplImage *img1, *img2, *blended;void trackbarHandler(int pos);int main() {img1 = cvLoadImage(FILE_NAME1);if (!img1) {printf(Cannot open %s , FILE_NAME1);return -1;}img2 = cvLoadImage(FILE_NAME2);if (!img2) {cvReleaseImage(&img1);printf(Cannot open %s , FILE_NAME2);return -1;}// The two images should have the same propertiesif (img1->width != img2->width ||img1->height != img2->height ||img1->nChannels != img2->nChannels) {cvReleaseImage(&img1);cvReleaseImage(&img2);printf(The two images should have the same properties );return -1;}blended = cvCreateImage(cvSize(img1->width, img1->height),img1->depth, img1->nChannels);cvNamedWindow(WINDOW_NAME);int blendRatio = 50; // 0 - 100 [%]cvCreateTrackbar(Ratio, WINDOW_NAME, &blendRatio, 100, trackbarHandler);trackbarHandler(blendRatio);cvWaitKey();cvReleaseImage(&img1);cvReleaseImage(&img2);cvReleaseImage(&blended);}void trackbarHandler(int pos) {int width = img1->width;int height = img1->height;int step = img1->widthStep/(img1->depth/8);int channels = img1->nChannels;uchar* data1 = (uchar *)img1->imageData;uchar* data2 = (uchar *)img2->imageData;uchar* dataB = (uchar *)blended->imageData;for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {for (int k = 0; k < channels; k++) {int e = i*step + j*channels + k;double r = pos/100.0; // Ratio, 0.0 - 1.0dataB[e] = r*data1[e] + (1 - r)*data2[e];}}}cvShowImage(WINDOW_NAME, blended);}Có thể sửa đổi một chút để thực hiện hiệu ứng hiện ảnh ra dần dần (fade in, thường từ màu đen) hoặc làm ảnhbiến mất dần dần (fade out, thường thành màu đen).

Tài liệu được xem nhiều: