Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "cuda_runtime.h"
- #include "device_launch_parameters.h"
- #include <stdio.h>
- #include "opencv2/core.hpp"
- #include "opencv2/imgproc.hpp"
- #include "opencv2/highgui.hpp"
- #include <iostream>
- using namespace std;
- using namespace cv;
- __global__ void cojestkurwa(int col) {
- }
- __global__ void kernel_scale_up(unsigned char* img, int col, int row) {
- cv::Mat help = cv::Mat(row, col, CV_8UC1, *img);
- int scale_percent = 200; // percent of original size
- int width = int(help.rows * scale_percent / 100);
- int height = int(help.cols * scale_percent / 100);
- img = help.data;
- }
- /*
- * Scale up image
- */
- Mat scale_up(Mat img)
- {
- int scale_percent = 200; // percent of original size
- int width = int(img.rows * scale_percent / 100);
- int height = int(img.cols * scale_percent / 100);
- //resize image
- img.resize(width, height);
- return img;
- }
- /*
- * Scale down image
- */
- Mat scale_down(Mat img)
- {
- int scale_percent = 50; // percent of original size
- int width = int(img.rows * scale_percent / 100);
- int height = int(img.cols * scale_percent / 100);
- //resize image
- img.resize(width, height);
- return img;
- }
- /*
- * Box filter image
- */
- Mat filter_img(Mat img)
- {
- cv::Mat mask = cv::Mat::zeros(img.size(), img.type());
- cv::Mat dstImage = cv::Mat::zeros(img.size(), img.type());
- cv::circle(mask, cv::Point(mask.rows / 2, mask.cols / 2), 50, cv::Scalar(255, 0, 0), -1, 8, 0);
- img.copyTo(dstImage, mask);
- return img;
- }
- /*
- *Write menu
- */
- void write_menu()
- {
- cout << "What do You want to do with images?" << endl
- << "Rotate left, select 1" << endl
- << "Rotate right, select 2" << endl
- << "Scale up, select 3" << endl
- << "Scale down(make miniatures), select 4" << endl
- << "Use funny filter, select 5" << endl
- << "Remember other values are invalid!" << endl;
- }
- int main()
- {
- cojestkurwa << <1, 1 >> > (2);
- std::cout << "Hello World!\n";
- cv::String path("noga.jpeg"); //select only jpg
- vector<cv::String> fn;
- vector<cv::Mat> data;
- std::cout << path << endl;
- glob(path, fn, true); // recurse
- std::cout << fn.size() << endl;
- int selection;
- do {
- write_menu();
- cin >> selection;
- } while (selection > 5 || selection < 1);
- std::cout << fn.size() << endl;
- for (size_t k = 0; k < fn.size(); ++k)
- {
- cv::Mat im = imread(fn[k]);
- std::cout << fn[k] << endl;
- if (im.empty()) continue; //only proceed if sucsessful
- //namedWindow("Display window", WINDOW_AUTOSIZE);// Create a window for display.
- //imshow("Display window", im); // Show our image inside it.
- switch (selection) {
- case 1:
- rotate(im, im, ROTATE_90_COUNTERCLOCKWISE);
- break;
- case 2:
- rotate(im, im, ROTATE_90_CLOCKWISE);
- break;
- case 3:
- const int imgsize = im.cols * im.rows;
- unsigned char* cuda_im;
- cudaMalloc<unsigned char>(&cuda_im, imgsize);
- cudaMemcpy(cuda_im, im.ptr(), imgsize, cudaMemcpyHostToDevice);
- int kolumny = im.cols;
- int wiersze = im.rows;
- //kernel_scale_up <<<1, 10>>> (cuda_im, im.cols, im.rows);
- cudaMemcpy(im.ptr(), cuda_im, imgsize, cudaMemcpyDeviceToHost);
- free(cuda_im);
- break;
- case 4:
- scale_down(im);
- break;
- case 5:
- filter_img(im);
- break;
- default:
- cout << "Operation not supported!" << endl;
- }
- imwrite(fn[k], im);
- data.push_back(im);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement