summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2014-12-24 17:51:21 +0100
committerFlorian Jung <flo@windfisch.org>2014-12-24 17:51:21 +0100
commitc834d90b18b18a64ab1f79b40acac5911cefc671 (patch)
treee533b5c2fa3e0b3634c3dc8f6d21abc9b238503b
parent27b9f435a65cf270ef1f320736f2d6ae7347cfe4 (diff)
verzerrung einstellbar
-rw-r--r--client2.c82
1 files changed, 61 insertions, 21 deletions
diff --git a/client2.c b/client2.c
index 2707b87..b78a960 100644
--- a/client2.c
+++ b/client2.c
@@ -45,19 +45,6 @@ int main(int argc, const char** argv)
if (connect(sockfd, (struct sockaddr*) &my_sockaddr, sockaddrlen) == -1)
die("connect");
- Mat camera_matrix = Mat::eye(3,3,CV_32FC1);
- camera_matrix.at<float>(0,0)=1000;
- camera_matrix.at<float>(1,1)=1000;
- camera_matrix.at<float>(0,2)=800;
- camera_matrix.at<float>(1,2)=300;
- Mat map1[3], map2[3];
- for (int i=0; i<3; i++)
- {
- Mat camera_matrix_clone = camera_matrix.clone();
- camera_matrix_clone.at<float>(0,0)*=(1.+i/100.);
- camera_matrix_clone.at<float>(1,1)*=(1.+i/100.);
- initUndistortRectifyMap(camera_matrix, Vec4f(0.5,0.1,0,0), Mat::eye(3,3,CV_32F), camera_matrix_clone, Size(1600,600), CV_32FC1, map1[i], map2[i]);
- }
printf("GO!!\n");
time_t t = time(NULL);
int nframes=0;
@@ -67,13 +54,65 @@ int main(int argc, const char** argv)
int framelen = ((buffer[0]*256+buffer[1])*256+buffer[2])*256+buffer[3];
if (framelen > sizeof(buffer)) suicide("buffer too small");
read_completely(sockfd, buffer, framelen);
- while (waitKey(1) != 'x')
+ char key;
+ bool go=true;
+ bool new_vals=true;
+
+ #define N_VALUES 8
+ int curr_val=0;
+ float val[N_VALUES];
+ float step[N_VALUES] = {0.05,0.05,0.05,0.05,10,10,10,10};
+ Mat map1[3], map2[3];
+
+ float &k1=val[0], &k2=val[1], &p1=val[2], &p2=val[3];
+ float &c1=val[4], &c2=val[5], &c1_=val[6], &c2_=val[7];
+ k1=0.5;
+ k2=0.1;
+ p1=0.0;
+ p2=0.0;
+ c1=800;
+ c2=300;
+ c1_=960/2;
+ c2_=1080/2;
+
+ while ((key = waitKey(1)) != 'x')
{
- write(sockfd,"get\n",4);
- read_completely(sockfd, buffer, 4);
- int framelen = ((buffer[0]*256+buffer[1])*256+buffer[2])*256+buffer[3];
- if (framelen > sizeof(buffer)) suicide("buffer too small");
- read_completely(sockfd, buffer, framelen);
+ switch (key)
+ {
+ case 'g': go=!go; break;
+ case 'w': val[curr_val]+=step[curr_val]; new_vals=true; break;
+ case 's': val[curr_val]-=step[curr_val]; new_vals=true; break;
+ case 'a': curr_val = (curr_val-1+N_VALUES) % N_VALUES; break;
+ case 'd': curr_val = (curr_val+1) % N_VALUES; break;
+ }
+
+ if (new_vals)
+ {
+ Mat camera_matrix = Mat::eye(3,3,CV_32FC1);
+ camera_matrix.at<float>(0,0)=1000;
+ camera_matrix.at<float>(1,1)=1000;
+ camera_matrix.at<float>(0,2)=c1;
+ camera_matrix.at<float>(1,2)=c2;
+ for (int i=0; i<3; i++)
+ {
+ Mat camera_matrix_clone = camera_matrix.clone();
+ camera_matrix_clone.at<float>(0,0)*=(1.+(i-1)/100.);
+ camera_matrix_clone.at<float>(1,1)*=(1.+(i-1)/100.);
+ camera_matrix_clone.at<float>(0,2)=c1_;
+ camera_matrix_clone.at<float>(1,2)=c2_;
+ initUndistortRectifyMap(camera_matrix, Vec4f(k1,k2,p1,p2), Mat::eye(3,3,CV_32F), camera_matrix_clone, Size(960,1080), CV_32FC1, map1[i], map2[i]);
+ }
+
+ new_vals=false;
+ }
+
+ if (go) {
+ write(sockfd,"get\n",4);
+ read_completely(sockfd, buffer, 4);
+ int framelen = ((buffer[0]*256+buffer[1])*256+buffer[2])*256+buffer[3];
+ if (framelen > sizeof(buffer)) suicide("buffer too small");
+ read_completely(sockfd, buffer, framelen);
+ }
//Mat dingens=Mat::eye(100,100,CV_8UC1) * 244;
Mat dingens(600,1600,CV_8UC3, buffer);
@@ -81,7 +120,7 @@ int main(int argc, const char** argv)
dingens.col(i)=Vec3b(255,192,128);
for (int i=0; i< 600; i+=50)
dingens.row(i)=Vec3b(255,192,128);
- Mat zeuch;
+ Mat zeuch, zeuch2;
//remap(dingens, zeuch, map1, map2, INTER_LINEAR);
Mat colors[3];
@@ -92,8 +131,9 @@ int main(int argc, const char** argv)
remap(colors[i], colors2[i], map1[i], map2[i], INTER_LINEAR);
merge(colors2, 3, zeuch);
+ hconcat(zeuch,zeuch,zeuch2);
- imshow("dingens",zeuch);
+ imshow("dingens",zeuch2);
time_t tmp = time(NULL);
if (tmp!=t)