opencv-简单图像处理

这篇具有很好参考价值的文章主要介绍了opencv-简单图像处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像像素存储形式
 对于只有黑白颜色的灰度图,为单通道,一个像素块对应矩阵中一个数字,数值为0到255, 其中0表示最暗(黑色) ,255表示最亮(白色)
opencv-简单图像处理,opencv,opencv,图像处理,计算机视觉

对于采用RGB模式的彩色图片,为三通道图,Red、Green、Blue三原色,按不同比例相加,一个像素块对应矩阵中的一个向量, 如[24,180, 50],分别表示三种颜色的比列, 即对应深度上的数字,如下图所示:
opencv-简单图像处理,opencv,opencv,图像处理,计算机视觉
需要注意的是,由于历史遗留问题,opencv采用BGR模式,而不是RGB

图像读取和写入cv.imread()

imread(img_path,flag) 读取图片,返回图片对象
    img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None
    flag:cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1
          cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0
          cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1

显示图像cv2.imshow()

imshow(window_name,img):显示图片,窗口自适应图片大小
    window_name: 指定窗口的名字
    img:显示的图片对象
    可以指定多个窗口名称,显示多个图片
    
waitKey(millseconds)  键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)
    millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件
    
destroyAllWindows(window_name) 
    window_name: 需要关闭的窗口名字,不传入时关闭所有窗口

保存图片cv2.imwrite()

imwrite(img_path_name,img)
    img_path_name:保存的文件名
    img:文件对象

ROI截取(Range of Interest)

 #ROI,Range of instrest
roi = img[100:200,300:400]  #截取100行到200行,列为300到400列的整块区域
img[50:150,200:300] = roi   #将截取的roi移动到该区域 (50到100行,200到300列)
b = img[:,:,0]  #截取整个蓝色通道

b,g,r = cv2.split(img) #截取三个通道,比较耗时
img = cv2.merge((b,g,r))

添加边界(padding)

cv2.copyMakeBorder()
    参数:
        img:图像对象
        top,bottom,left,right: 上下左右边界宽度,单位为像素值
        borderType:
            cv2.BORDER_CONSTANT, 带颜色的边界,需要传入另外一个颜色值
            cv2.BORDER_REFLECT, 边缘元素的镜像反射做为边界
            cv2.BORDER_REFLECT_101/cv2.BORDER_DEFAULT
            cv2.BORDER_REPLICATE, 边缘元素的复制做为边界
            CV2.BORDER_WRAP
        value: borderType为cv2.BORDER_CONSTANT时,传入的边界颜色值,如[0,255,0]

像素算术运算cv2.add() 相加的两个图片,应该有相同的大小和通道

cv2.add()
    参数:
        img1:图片对象1
        img2:图片对象2
        mask:None (掩膜,一般用灰度图做掩膜,img1和img2相加后,和掩膜与运算,从而达到掩盖部分区域的目的)
        dtype:-1

注意:图像相加时应该用cv2.add(img1,img2)代替img1+img2    
        >>> x = np.uint8([250])
        >>> y = np.uint8([10])
        >>> print cv2.add(x,y) # 250+10 = 260 => 255  #相加,opencv超过255的截取为255
        [[255]]
        >>> print x+y          # 250+10 = 260 % 256 = 4  #相加,np超过255的会取模运算 (uint8只能表示0-255,所以取模)
        [4]

图像阈值化 cv2.threshold()  cv2.adaptiveThreshold()

cv2.threshold(): 
参数:
    img:图像对象,必须是灰度图
    thresh:阈值
    maxval:最大值
    type:
        cv2.THRESH_BINARY:     小于阈值的像素置为0,大于阈值的置为maxval
        cv2.THRESH_BINARY_INV: 小于阈值的像素置为maxval,大于阈值的置为0
        cv2.THRESH_TRUNC:      小于阈值的像素不变,大于阈值的置为thresh
        cv2.THRESH_TOZERO       小于阈值的像素置0,大于阈值的不变
        cv2.THRESH_TOZERO_INV   小于阈值的不变,大于阈值的像素置0
返回两个值
    ret:阈值
    img:阈值化处理后的图像
    
cv2.adaptiveThreshold() 自适应阈值处理,图像不同部位采用不同的阈值进行处理
参数:
    img: 图像对象,8-bit单通道图
    maxValue:最大值
    adaptiveMethod: 自适应方法
        cv2.ADAPTIVE_THRESH_MEAN_C     :阈值为周围像素的平均值
        cv2.ADAPTIVE_THRESH_GAUSSIAN_C : 阈值为周围像素的高斯均值(按权重)
    threshType:
        cv2.THRESH_BINARY:     小于阈值的像素置为0,大于阈值的置为maxValuel
        cv2.THRESH_BINARY_INV:  小于阈值的像素置为maxValue,大于阈值的置为0
    blocksize: 计算阈值时,自适应的窗口大小,必须为奇数 (如3:表示附近3个像素范围内的像素点,进行计算阈值)
    C: 常数值,通过自适应方法计算的值,减去该常数值
(mean value of the blocksize*blocksize neighborhood of (x, y) minus C)

图像形状变换 cv2.resize() 图像缩放文章来源地址https://www.toymoban.com/news/detail-753448.html

cv2.resize() 放大和缩小图像
    参数:
        src: 输入图像对象
        dsize:输出矩阵/图像的大小,为0时计算方式如下:dsize = Size(round(fx*src.cols),round(fy*src.rows))
        fx: 水平轴的缩放因子,为0时计算方式:  (double)dsize.width/src.cols
        fy: 垂直轴的缩放因子,为0时计算方式:  (double)dsize.heigh/src.rows
        interpolation:插值算法
            cv2.INTER_NEAREST : 最近邻插值法
            cv2.INTER_LINEAR   默认值,双线性插值法
            cv2.INTER_AREA        基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
            cv2.INTER_CUBIC        基于4x4像素邻域的3次插值法
            cv2.INTER_LANCZOS4     基于8x8像素邻域的Lanczos插值
                     
    cv2.INTER_AREA 适合于图像缩小, cv2.INTER_CUBIC (slow) & cv2.INTER_LINEAR 适合于图像放大

到了这里,关于opencv-简单图像处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于深度学习、机器学习,对抗生成网络,OpenCV,图像处理,卷积神经网络计算机毕业设计选题指导

    开发一个实时手势识别系统,使用卷积神经网络(CNN)和深度学习技术,能够识别用户的手势并将其映射到计算机操作,如控制游戏、音量调整等。这个项目需要涵盖图像处理、神经网络训练和实时计算等方面的知识。 利用深度学习模型,设计一个人脸识别系统,可以识别人

    2024年02月07日
    浏览(88)
  • 【计算机视觉—python 】 图像处理入门教程 —— 图像属性、像素编辑、创建与复制、裁剪与拼接【 openCV 学习笔记 005 to 010 and 255】

    OpenCV中读取图像文件后的数据结构符合Numpy的ndarray多维数组结构,因此 ndarray 数组的属性和操作方法可用于图像处理的一些操作。数据结构如下图所示: img.ndim:查看代表图像的维度。彩色图像的维数为3,灰度图像的维度为2。 img.shape:查看图像的形状,代表矩阵的行数(高

    2024年01月19日
    浏览(70)
  • 【计算机视觉】数字图像处理(六)—— 图像压缩

    (一)、图像编码技术的研究背景 1. 信息信息传输方式发生了很大的改变 通信方式的改变 文字+语音 图像+文字+语音 通信对象的改变 人与人 人与机器,机器与机器 2. 图像传输与存储需要的信息量空间 (1)彩色视频信息 对于电视画面的分辨率640 480的彩色图像,每秒30帧,

    2024年02月05日
    浏览(86)
  • 【计算机视觉】数字图像处理(四)—— 图像增强

    图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择地突出某些感兴趣的信息,同时抑制一些不需要的信息,提高图像的使用价值。 图像增强方法 图像增强方法从增强的作用域出发,可

    2023年04月16日
    浏览(108)
  • 计算机视觉——图像处理基础

    随着计算机视觉的不断发展,图像的预处理成为分析图像的必然前提,本文就介绍图像处理的基础内容。 图像中,高频部分是图像中像素值落差很大的部分,如图像边缘,该部分的有用信息经常被噪声淹没。降低高频段的噪声是设计图像滤波器的关键。 图像滤波器就是一个

    2024年01月19日
    浏览(62)
  • 图像处理与计算机视觉算法

    图像处理与计算机视觉算法是实现对图像和视频内容分析、理解和操作的一系列技术。这些算法可以分为多个类别,包括但不限于以下几个主要方面: 预处理 : 像素操作:灰度化、二值化、直方图均衡化等,用于改善图像的对比度和亮度分布。 去噪:高斯滤波、中值滤波、

    2024年02月22日
    浏览(53)
  • 图像处理/计算机视觉期刊投稿经验

    我不配,以后有机会再说吧。 我也不配,以后有机会再说吧。 2022年投过,一个月之后被编辑immediate reject, 原因是“the scope not aligning well with the theme interest and/or desired genres of TSP”。在邮件的末尾,编辑表示manuscript的选题“well motivated”并且“interesting”,主要担忧是所用到的

    2024年02月08日
    浏览(55)
  • 计算机视觉图像处理常用方法汇总

    光线进入眼睛:当光线从一个物体反射或散射出来,进入人的眼睛时,它们通过角膜和晶状体进入眼球内部。 聚焦光线:角膜和晶状体将光线聚焦在视网膜上。晶状体可以通过调整其形状来调节聚焦距离,使物体的图像清晰地映射在视网膜上。 光敏细胞感受光线:视网膜是

    2024年02月07日
    浏览(55)
  • 计算机视觉(2)——图像预处理

    二、图像预处理 2.1 介绍  2.2 特征提取方法 2.2.1 直方图 2.2.2 CLAHE 2.2.3 形态学运算 2.2.4 空间域处理及其变换 2.2.5 空间域分析及变换  (1) 均值滤波 (2)中值滤波 (3)高斯滤波 (4) 梯度Prewitt滤波 (5) 梯度Sobel滤波 (6) 梯度Laplacian滤波 (7) 其他滤波  2.2.6 频域分

    2024年02月03日
    浏览(64)
  • 目标检测 图像处理 计算机视觉 工业视觉

    从事ai视觉算法有几年了,本帖是对以往做过的计算机视觉项目的一些总结,硬件部署的大多是基于nvidia的开发板和GPU服务器上,如jetson nano,还有地平线J3J5和瑞芯微以及星辰的开发板,另外就是对实时性要求不高的部署在cpu上。有相关项目需求可以一起交流和学习。(+v 3

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包