ちょっと詰まっているところがありますので皆さんのお知恵をお貸しいただければなと思い投稿させていただきます。
いま、自分が作りたいコードが
ガウシアンフィルタをもちいて徐々に画像のぼかしを強くしたいというものです。
c++でopencvを導入してやっています。
#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <chrono>
#include <Windows.h>
#include <conio.h>
using namespace cv;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int milliseconds = 0;
int seconds = 0;
int minutes = 0;
int hours = 0;
double sgm = 0;
double change_seconds = 15.00;
double bokashi = 3.00;
double change = bokashi / change_seconds;
for (;;) {
if (change_seconds == seconds) {
if (milliseconds == 10) {
++seconds;
milliseconds = 0;
}
if (seconds == 60) {
++minutes;
seconds = 0;
}
if (seconds != 0) {
if (milliseconds == 0) {
sgm = sgm + change;
}
}
++milliseconds;
Sleep(100);
}
cout << endl;
}
//原画像
Mat src_image = imread("lena.jpg");
if (src_image.empty()) return -1;
Mat dst_image = src_image.clone();
GaussianBlur(src_image, dst_image, Size(sgm, sgm), 0);
namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("image", dst_image);
waitKey(0);
destroyAllWindows();
return 0;
}
一応、変化させたい数値を確認したところ一秒あたり0.2ずつ変化するようになっていたので、それを関数にあてはめたらできるかと思ってこう書いています。
GaussianBlurにdouble型の数値を入れても動いたので行けると思いました。
動的に動かすのにimshowはあってないのかなと自分は思ったのですが、imshowでも動かす方法はあるのでしょうか?
研究の一環でやろうとしていることでプログラム作成で大きく時間を割きたくなくて質問してみました。
期限は特にないのですが、来週の火曜日までには何とか形にしたいと考えています。
よろしくお願いします。