小言_互联网的博客

C++ opencv 图像像素的逻辑操作

576人阅读  评论(0)

1.API和相关知识

1. rectangele 绘制矩形

共7个参数
            第1个参数 输入
            第2个参数 矩形左上坐标
            第3个参数 矩形右下坐标
            第4个参数 矩形颜色
            第5个参数 线宽
                            如果参数 >=0,则表示绘制矩形(如为1,表示绘制的矩形边为1个像素
                            如果参数 < 0,则表示填充矩形(如-1,表示填充整个矩形)
            第6个参数 lineType
                            关于图像锯齿,有几种方式处理
                                不管不顾,就用LINE_4 或者 LINE_8
                                消除锯齿,就用LINE_AA (AA就是反锯齿)
            第7个参数  缩小图像,同时缩短矩形左上顶点与(0,0)位置的距离(一般没用)
                      0表示不变
                      1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
                      2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2

第二种

rectangele
    绘制矩形
        共6个参数
            第1个参数 输入
            第2个参数 矩形的左上点+往对角方向延伸的距离(x1,x2,延伸长度1,延伸长度2)
            第3个参数 矩形颜色
            第4个参数 线宽
                            如果参数 >=0,则表示绘制矩形(如为1,表示绘制的矩形边为1个像素)
                            如果参数 < 0,则表示填充矩形(如-1,表示填充整个矩形)
            第5个参数 lineType
                            关于图像锯齿,有几种方式处理
                                不管不顾,就用LINE_4 或者 LINE_8
                                消除锯齿,就用LINE_AA (AA就是反锯齿)
            第6个参数  缩小图像,同时缩短矩形左上顶点与(0,0)位置的距离
                      0表示不变
                      1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
                      2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2
 


  
  1. void QuickDemo::bitwise_demo(Mat& image) {
  2. Mat m1 = Mat:: zeros( Size( 256, 256), CV_8UC3);
  3. Mat m2 = Mat:: zeros( Size( 256, 256), CV_8UC3);
  4. //rectangle有两种传参方式,这里分别进行了示范
  5. rectangle(m1, Point( 100, 100), Point( 180, 180), Scalar( 255, 255, 0), -1, LINE_8, 0);
  6. rectangle(m2, Rect( 150, 150, 80, 80), Scalar( 0, 255, 255), -1, LINE_8, 0);
  7. imshow( "m1", m1);
  8. imshow( "m2", m2);
  9. }

 

 

2.位运算

opencv中,图像的为运算有4种

  • 异或

bitwise_and(m1, m2, dst);

//bitwise_or(m1, m2, dst);

//bitwise_not(m1, dst);

//bitwise_xor(m1, m2, dst);略

2.实例代码


  
  1. void QuickDemo::bitwise_demo(Mat& image) {
  2.     Mat m1 = Mat:: zeros( Size( 256, 256), CV_8UC3);
  3.     Mat m2 = Mat:: zeros( Size( 256, 256), CV_8UC3);
  4.     
  5.      rectangle(m1, Point( 100, 100), Point( 180, 180), Scalar( 255, 255, 0), -1, LINE_4, 0);
  6.     
  7.      rectangle(m2, Rect( 150, 150, 80, 80), Scalar( 0, 255, 255), -1, 0);
  8.     
  9.     Mat dst;
  10.     
  11.      bitwise_and(m1, m2, dst);
  12.      //bitwise_or(m1, m2, dst);
  13.      //bitwise_not(m1, dst);
  14.      //bitwise_xor(m1, m2, dst);
  15.      imshow( "位运算",dst);
  16. }


转载:https://blog.csdn.net/weixin_46098612/article/details/127774177
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场