cvNot()它是如何工作的? [英] cvNot() how it exactly work ?
问题描述
我需要知道这个函数是如何工作的,学习opencv计算机视觉书告诉我cvNot()反转源的每个元素中的每一位但是当我写这段代码时
float A [] = { 1 , 2 , 3 , 4 };
CvMat * Mat1 = cvCreateMat( 2 , 2 ,CV_8UC1);
Mat1-> data.fl = A;
cvNot(Mat1,Mat1);
给我这个结果:
-4 2
3 4
这里有什么问题!!!,这个结果反转到matricx中的每个元素{1,2; 3,4} ????
float A [] = { 1 , 2 , 3 , 4 跨度>};
CvMat * Mat1 = cvCreateMat( 2 , 2 ,CV_32FC1);
Mat1-> data.fl = A;
cvNot(Mat1,Mat1);
for ( int i = 0 ; i< 2 ; i ++)
for ( int j = 0 ; j< 2 ; j ++)
cout<< CV_MAT_ELEM(* Mat1, float ,i,j)<< ENDL;
unsigned char B [] = { 1 , 2 , 3 , 4 跨度>};
CvMat * Mat2 = cvCreateMat( 2 , 2 ,CV_8UC1);
Mat2-> data.ptr = B;
cvNot(Mat2,Mat2);
for ( int i = 0 ; i< 2 ; i ++)
for ( int j = 0 ; j< 2 ; j ++)
cout<< CV_MAT_ELEM(* Mat2, unsigned char ,i,j)<< ENDL;
以下是2个例子。 unsigned char应该很容易理解。你可以用这个来帮忙。
cout<< ( int )CV_MAT_ELEM(* Mat2, unsigned char ,i,j)<< ENDL;
对于浮动,这可能会有所帮助(如果你能看出为什么结果都是负面的,你可能会理解它)。< br $> b $ b
http://en.wikipedia.org/wiki/Floating_point [ ^ ]
参见
http://electronics.stackexchange.com/questions/9941/the-bitwise-complement-of-a-floating-point-numbers-binary-representation [ ^ ]
i need to know how this function work, learning opencv computer vision book tell me cvNot() inverts every bit in every element of source but when i write this code
float A[]={1,2,3,4};
CvMat *Mat1=cvCreateMat(2,2,CV_8UC1);
Mat1->data.fl = A;
cvNot(Mat1,Mat1);
Give me this result :
-4 2
3 4
what is wrong here!!!, this result is invert to each element in matricx {1,2;3,4} ????
float A[]={1,2,3,4}; CvMat *Mat1=cvCreateMat(2,2,CV_32FC1); Mat1->data.fl = A; cvNot(Mat1 , Mat1); for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) cout << CV_MAT_ELEM(*Mat1, float, i, j) << endl; unsigned char B[]={1,2,3,4}; CvMat *Mat2=cvCreateMat(2,2,CV_8UC1); Mat2->data.ptr = B; cvNot(Mat2 , Mat2); for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) cout << CV_MAT_ELEM(*Mat2, unsigned char, i, j) << endl;
Here are 2 examples. The unsigned char should be easy to understand. You can use this to help.
cout << (int) CV_MAT_ELEM(*Mat2, unsigned char, i, j) << endl;
For the float this may help (if you can see why the results all negative you probably understand it).
http://en.wikipedia.org/wiki/Floating_point[^]
See also
http://electronics.stackexchange.com/questions/9941/the-bitwise-complement-of-a-floating-point-numbers-binary-representation[^]
这篇关于cvNot()它是如何工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!