Opencv重要函数

利用cvGet2D()和cvSet2D()对像素点进行处理

CvScalar是opencv中的一种结构体数据类型,类定义为:

1 typedef struct CvScalar
2 {
3     double val[4];
4 }CvScalar;

功能:对于灰度图,存储像素的灰度值;对于多通道图像,存储各通道分量的灰度值
说明:该结构体可以是一个可以存储四个double类型元素的数组,通常,只会用到其中的前三个,val[0],val[1],val[2]的含义分别是彩色照片的三个通道,R,G,B通道。R是红色分量,G是绿色分量,B是蓝色分量,a是alpha。

对于图像中的某一像素点 P(x, y), 在我们正常的坐标系中,x代表其横坐标,y代表其纵坐标,而在opencv的函数 cvGet2D()与cvSet2D() 中,却和我们常见的直角坐标系略有不同。

cvGet2D

功能: cvGet2D():访问图像中某一坐标为(x, y)的像素点的值

   CvScalar  cvGet2D (const CvArr * arr, int idx0, int idx1);

  函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标,但跟我们平常习惯的坐标不一样的是,idx0代表是的行,即高度,对应于我们平常坐标系的y, idx1代表的是列,即宽度,对应于我们平常坐标系的x,cvSet2D() 也类似。所以在使用cvSet2D() 与 cvGet2D() 时,千万要注意坐标的顺序。

cvSet2D

功能: cvSet2D():设置图像中某一坐标为(x, y)的像素点的值

利用cv::cirecle画图

import cv2 as cv
img=cv.imread('0.jpg')
cv.imshow('img',img)
print(img.shape)
cv.circle(img,(520,430),300,(255,0,0),8)  # 在img原始图片中划圈,其圈的中心点为(520,430),半径=300,颜色为(255,0,0),粗细=8
cv.imshow('img1',img)
cv.imwrite('f.png',img)   # 存储有圈的图片
cv.waitKey()
cv.destroyAllWindows()
posted @ 2020-05-17 09:30  少年笔谈  阅读(221)  评论(0)    收藏  举报