在图像上画矩形 opencv

本文介绍了一种使用 OpenCV 库中的 cv::Mat 类型来绘制带有特定宽度的矩形边界的方法。通过遍历像素并设置 RGB 值,实现对矩形四条边的绘制。

IplImage * c_allImage =cvCloneImage(image);

         cv::Matmtx(c_allImage, 0);

//画矩形的上面的边,宽度为5

         for(int j = origin_upToup; j < origin_upToup + 5; j++)

                   for(inti = origin_leftToleft; i < origin_leftToleft + origin_width; i++)

                             for(int n = 0;n < mtx.channels(); n++){

                                     if(n == 0) mtx.at<uchar>(origin_upToup,i * mtx.channels() + n) = 255;   //取得像素或者赋值

                                     else

                                               mtx.at<uchar>(j,i* mtx.channels() + n) = 0;

                            }

//画矩形的下面的边,宽度为5

         for(int j = origin_upToup; j < origin_upToup + 5; j++)

                   for(inti = origin_leftToleft; i < origin_leftToleft + origin_width; i++)

                             for(int n = 0; n < mtx.channels(); n++){

                                      if (n == 0)mtx.at<uchar>(origin_upToup,i * mtx.channels() + n) = 255;   //取得像素或者赋值

                                      else

                                                mtx.at<uchar>((j + origin_height),i *mtx.channels() + n) = 0;

                            }

//画矩形的左面的边,宽度为5

         for(int j = origin_leftToleft; j < origin_leftToleft + 5; j++)

                   for(inti = origin_upToup; i < origin_upToup + origin_height; i++)

                             for(int n = 0; n < mtx.channels(); n++){

                                      if (n == 0) mtx.at<uchar>(i,origin_leftToleft* mtx.channels() + n) = 255;   //取得像素或者赋值

                                      else

                                                mtx.at<uchar>(i,j * mtx.channels() + n)= 0;

                            }

//画矩形的右面的边,宽度为5

         for(int j = origin_leftToleft; j > origin_leftToleft - 5; j--)

                   for(inti = origin_upToup; i < origin_upToup + origin_height; i++)

                             for(int n = 0; n < mtx.channels(); n++){

                                      if (n == 0)mtx.at<uchar>(i,(origin_leftToleft + origin_width) * mtx.channels() + n)= 255;   //取得像素或者赋值

                                      else

                                                mtx.at<uchar>(i,(j + origin_width) *mtx.channels() + n) = 0;

                            }

         *c_allImage= IplImage(mtx);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值