KIAS primer
From Cinemachines
Basic Image Processing
Displaying an Image
for( int y = 0; y < h; y++ ) {
for( int x = 0; x < w; x++ ) {
dist.at<Vec3b>(y,x)[0] = sources[1].at<Vec3b>(y,x)[0];
dist.at<Vec3b>(y,x)[1] = sources[1].at<Vec3b>(y,x)[1];
dist.at<Vec3b>(y,x)[2] = sources[1].at<Vec3b>(y,x)[2];
}
}
where h = screen height, w = screen width and sources[1] = input
Flip image
Vertical flip
for( int y = 0; y < h; y++ ) {
for( int x = 0; x < w; x++ ) {
dist.at<Vec3b>(y,x)[0] = sources[1].at<Vec3b>(y,(w-x))[0];
dist.at<Vec3b>(y,x)[1] = sources[1].at<Vec3b>(y,(w-x))[1];
dist.at<Vec3b>(y,x)[2] = sources[1].at<Vec3b>(y,(w-x))[2];
}
}
Horisontal flip
for( int y = 0; y < h; y++ ) {
for( int x = 0; x < w; x++ ) {
dist.at<Vec3b>(y,x)[0] = sources[1].at<Vec3b>((h-y),x)[0];
dist.at<Vec3b>(y,x)[1] = sources[1].at<Vec3b>((h-y),x)[1];
dist.at<Vec3b>(y,x)[2] = sources[1].at<Vec3b>((h-y),x)[2];
}
}
Combined vertical-horisontal flip
for( int y = 0; y < h; y++ ) {
for( int x = 0; x < w; x++ ) {
dist.at<Vec3b>(y,x)[0] = sources[1].at<Vec3b>((h-y),(w-x))[0];
dist.at<Vec3b>(y,x)[1] = sources[1].at<Vec3b>((h-y),(w-x))[1];
dist.at<Vec3b>(y,x)[2] = sources[1].at<Vec3b>((h-y),(w-x))[2];
}
}
Repeat image
Horisontal repeat
for( int y = 0; y < h; y++ ) {
for( int x = 0; x < w; x++ ) {
dist.at<Vec3b>(y,x)[0] = sources[1].at<Vec3b>((y),(x+x))[0];
dist.at<Vec3b>(y,x)[1] = sources[1].at<Vec3b>((y),(x+x))[1];
dist.at<Vec3b>(y,x)[2] = sources[1].at<Vec3b>((y),(x+x))[2];
}
}