2
だから、矩形の画像を取り出してそこから円を描くことです。私は、ソースイメージからピクセルを取り出し、それらを行ごとに配列した単純なアルゴリズムを考え出しましたが、問題は結果があまりにも歪んでいることです。余りにも多くのデータを失うことなく、それを可能にするアルゴリズムはありますか?結果は以下の通りです与えられた画像のうちOpenCVで輪を描く
//reading source and destination images
Mat src = imread("srcImg.jpg", 1);
Mat dst = imread("dstImg.jpg", 1);
int srcH = src.rows; int srcW = src.cols;
int dstH = dst.rows; int dstW = src.cols;
//convert chamber radius to pixels
double alpha;
int r = 250;
double k = 210/(500 * PI);
//take pixels from source and arrange them into circles
for (int i = srcH-1; i > 0; i--) {
for (int j = 1; j <= srcW; j++) {
alpha = (double) (2 * PI * (r * k+i))/j;
int x_new = abs((int) (dstW/2 - (r * k + i) * cos(alpha)) - 200);
int y_new = abs((int) (dstH/2 - (3.5*(r * k + i) * sin(alpha)))+1000);
dst.at<uchar>(x_new, y_new) = src.at<uchar>(srcH-i, srcW-j);
}
}
//make dst image grey and show all images
Mat dstGray;
cvtColor(dst, dstGray, CV_RGB2GRAY);
imshow("Source", src);
imshow("Result", dstGray);
waitKey();
:
は、ここでは、コードですあなたが試すことができ
(それが聞こえるかもしれないほど怖いではない)source code for them from GitHub repoを取り、それを微調整することができますので、あなたが必要なものも大きいと効果を液化するために似ているようですradius、与えられた半径の円形ディスクに長方形のイメージをカプセル化したいですか?私は正しい? – ZdaR
はい、まさに私が必要なものです –