cvNot()它是如何工作的? [英] cvNot() how it exactly work ?

查看:78
本文介绍了cvNot()它是如何工作的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要知道这个函数是如何工作的,学习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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆