opencv

opencv

不同模块的功能

  • opencv_core :包含库的核心功能
cv::flip();
  • opencv_imgproc: 主要的图像处理函数
  • opencv_highgui:读写图像和视频函数、用户交互函数
cv::namedWindow();
cv::imshow();
cv::waitKey();
#直接读取灰色图  提高运行速度并减少内存使用
#灰度图直接读取彩色图,三通道值相同   cv_8U --->cv_8UC3
cv::imread("",cv::IMREAD_GRAYSCALE);
cv::imwrite();

  • cv::viz : 用于在三维环境下展示场景目标和相机

    编译opencv前需要安装VTK

opencv-python

标签绘制
color = [int(c) for c in COLORS[classIDs[i]]]
cv2.rectangle(img, (x1, y1), (x1 + w, y1 + h), color, 2)
text = '{}: {:.3f}'.format(LABELS[classIDs[i]], confidences[i])
#计算文本字符的宽、高
#参数:文本信息、字体、字体大小、线的粗细
#返回文本框大小、基线(最下方文本的y坐标)
(text_w, text_h), baseline = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 2)
cv2.rectangle(img, (x1, y1 - text_h - baseline), (x1 + text_w, y1), color, -1)
cv2.putText(img, text, (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 2)

操作像素

  • 图像以值传递的方式进行拷贝时,仍共享同一块图像数据(一荣俱荣)

    //深拷贝方式
    image.copyTo(img);
    cv::Mat img = image.clone;
    
  • 像素点—8位无符号数(通常)

  • 16位通道-----医学图像

//c++ 随机生成器
std::default_random_engine generator;

//使用at方法访问元素时需指定图像元素类型(模板方法)
image.at<uchar>(j,i) = value; //灰度图
image.at<cv::Vec3b>(j,i)[channel] = value;//彩色图  值
image.at<cv::Vec3b>(j,i) = cv::Vec3b(value,value,value)//向量

cv::Mat_(模板子类)
//使用Mat模板直接访问元素 与at效果一致但更简洁
cv::Mat_<uchar> img(image);
img(row,col) = value;

指针扫描图像
  • 行数是某个数字的整数倍时,图像处理性能会提高
  • 减色银子为2的指数时,使用位移运算符代码效率很高
  • 使用指针扫描图像缓冲区

减色函数


void colorReduce(cv::Mat image, int div = 64){
   int nl = image.rows;
   int nc = image.cols * image.channels();
   for(int j = 0 ; j < nl ; ++j){
      uchar* data = image.ptr<uchar>(j);
      for(int i = 0;i < nc;&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值