一切图像皆Mat

cvtColor:用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。

 cvtColor(image, hsv, COLOR_BGR2HSV, 0);//H 0-180  S,V 0-255  h,s是控制颜色 V控制亮度

. InputArray src: 输入图像即要进行颜色空间变换的原图像,可以是Mat类 
. OutputArray dst: 输出图像即进行颜色空间变换后存储图像,也可以Mat类 
. int code: 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片,
. int dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定

imread:找到地址读图

 Mat src = imread("D:/hutao.png");//读进来的图像是一个Mat就是矩阵 8位BGR图像255*255*255如果有透明通道就是2的32次方

imshow:在窗体上显示图片

imshow("HSV", hsv);

imwrite:保存图片到某个路径

imwrite("D:/hsv.png", hsv);

clone:深拷贝完全拷贝

 m1 = image.clone();

copyTo:有重载浅拷贝只拷贝图像非0部分

image.copyTo(m2);
image.copyTo(mask, red);//图像非0的部分不拷贝

.就可以得到和image一毛一样的矩阵m2。当然需要事先声明m2。并且两者可以互不相关的做各      种操作。

.把mask的非0部分复制到red上

Mat::ones:第一个通道是1其余通道都是0

Mat::zeros:创建一张黑色的图全是0

 Mat m3 = Mat::zeros(Size(400, 400), CV_8UC3);//8为无符号的单通道(1单通道)(400是图像的尺寸)//上面的1就是单通道就是8*8  如果变成3就是三通道就是8*(8*3)横着的是24竖着的还是8

.图像尺寸大小

.几个通道

at:存取图像中对应坐标为(x,y)的元素坐标

vector:C++的一个类

int pv = image.at<uchar>(row, col);//uchar是8位的 0-255
image.at<uchar>(row, col) = 255 - pv;
Vec3b bgr = image.at<Vec3b>(row, col);//b就是double
image.at<Vec3b>(row, col)[0] = 255 - bgr[0];
image.at<Vec3b>(row, col)[1] = 255 - bgr[1];
image.at<Vec3b>(row, col)[2] = 255 - bgr[2];

.单通道就是uchar类型

.多通道就是vec类型,3就是三通道,b就是double,单独赋值

ptr:Mat类中的指针

uchar* current_row = image.ptr<uchar>(row);//获取当前行的指针 是个地址

获取指定指针的地址

add:加操作

subtract:减操作

divide:除操作

multiply:乘操作

  Mat dst = Mat::zeros(image.size(), image.type());Mat m = Mat::zeros(image.size(), image.type());//大小类型一致m = (2, 2, 2);add(image, m, dst);imshow("加操作", dst);subtract(image, m, dst);imshow("减操作", dst);/*dst = image / Scalar(2, 2, 2);*/divide(image, m, dst);imshow("除操作", dst);multiply(image, m, dst);imshow("乘操作", dst);

输入

输入

输出

scalar:制造一个画布

red = Scalar(40, 40, 200);
image.copyTo(mask, red);//图像非0的部分不拷贝

三通道BGR

addWeighted:函数是将两张相同大小,相同类型的图片融合的函数。他可以实现图片的特效

addWeighted(image, 1.0, m, 0, 3, dst);

参数1:src1,第一个原数组.
参数2:alpha,第一个数组元素权重

参数3:src2第二个原数组
参数4:beta,第二个数组元素权重
参数5:gamma,图1与图2作和后添加的数值。不要太大,不然图片一片白。总和等于255以上就是纯白色了。

参数6:dst,输出图片

createTrackbar:是Opencv中的API,其可在显示图像的窗口中快速创建一个滑动控件,用于手动调节阈值,具有非常直观的效果

createTrackbar("Value Bar", "亮度与对比度调整", &lightness, Max_value, on_lightness, (void*)(&image));//track跟踪bar块 亮度

形式参数一、trackbarname:滑动空间的名称;

形式参数二、winname:滑动空间用于依附的图像窗口的名称;

形式参数三、value:初始化阈值;

形式参数四、count:滑动控件的刻度范围;

形式参数五、TrackbarCallback是回调函数,其定义如下:

static void on_lightness(int b, void* userdata)
{Mat image = *((Mat*)userdata);Mat m = Mat::zeros(image.size(), image.type());Mat dst = Mat::zeros(image.size(), image.type());addWeighted(image, 1.0, m, 0, b, dst);imshow("亮度与对比度调整", dst);
}//亮度

applyColorMap:给图片上色

applyColorMap(image, dst, COLORMAP_AUTUMN);

输入图

输出图

上色类型

rectangle:绘制矩形

rectangle(m1, Rect(100, 100, 80, 80), Scalar(255, 255, 0), -1, LINE_8, 0);//-1就是线宽 大于0就是绘制 小于0就是填充

输入图像

矩形的左上角坐标以及宽度和长度

颜色

-1就是线宽 大于0就是绘制 小于0就是填充

bitwise_and,bitwise_not,bitwise_or,bitwise_xor:与非或异或

 bitwise_and(m1, m2, dst);bitwise_or(m1, m2, dst);bitwise_xor(m1, m2, dst);bitwise_not(m1, dst);

split:分离通道

 std::vector<Mat>mv;split(image, mv);imshow("B", mv[0]);//单通道都是灰度图imshow("G", mv[1]);imshow("R", mv[2]);

merge:合并通道

 Mat dst;mv[0] = 0;//蓝色的通道是0mv[1] = 0;//绿色的通道是0//0,0,255就是红色merge(mv, dst);

可以给分离后的通道赋值然后合并

mixChannels:主要就是把输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数指定.

int from_to[] = { 0, 2, 1, 1, 2, 0 };//int的0通道复制到out的2通道。其他同理mixChannels(&image, 1, &dst, 1, from_to, 3);

输入矩阵的向量(可以理解成一队矩阵),所有矩阵必须有相同的大小和深度。

输入矩阵的个数。

输出矩阵的向量。所有的矩阵必须事先分配空间(如用create),大小和深度须与输入矩阵等同。

输出矩阵的个数。

序号对向量,用来决定哪个通道被拷贝。

通道数。

inRange:主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0),该功能类似于之间所讲的双阈值化操作。

 inRange(hsv, Scalar(75, 75, 75), Scalar(85, 85, 85), mask);//最小取值和最大取值
  • 参数1:输入要处理的图像,可以为单通道或多通道。
  • 参数2:包含下边界的数组或标量。
  • 参数3:包含上边界数组或标量。
  • 参数4:输出图像,与输入图像src 尺寸相同且为CV_8U 类型。

minMaxLoc:寻找矩阵中最小值和最大值的位置. 参数若不需要,则置为NULL或者0,即可.

 minMaxLoc(mv[i], &minv, &maxv, &minLoc, &maxLoc, Mat());std::cout << "min value" << minv << "max value" << maxv << std::endl;//单通道的最小值和最大值

参数1:InputArray类型的src,输入单通道数组(图像)。
参数2:double*类型的minVal,返回最小值的指针。若无须返回,此值置为NULL。(0-255)
参数3:double*类型的maxVal,返回最大值的指针。若无须返回,此值置为NULL。
参数4:Point*类型的minLoc,返回最小位置的指针(二维情况下)。若无须返回,此值置为NULL。(位置坐标)
参数5:Point*类型的maxLoc,返回最大位置的指针(二维情况下)。若无须返回,此值置为NULL。
参数6:InputArray类型的mask,用于选择子阵列的可选掩膜。

meanStdDev:计算矩阵的均值和标准偏差。

  meanStdDev(image, mean, stddev);//均值和标准方差 方差越小有效信息就越小
  • 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小;
  • 标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好;

src:输入矩阵,这个矩阵应该是1-4通道的

mean:输出参数,计算均值

stddev:输出参数,计算标准差

mask:可选参数

rectangle:画矩形

Rect rect;rect.x = 200;rect.y = 200;rect.width = 100;rect.height = 100;rectangle(image, rect, Scalar(0, 0, 255), 2, 8, 0);

img:图像.
pt1:矩形的一个顶点。
pt2:矩形对角线上的另一个顶点
color:线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
thickness:组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。
line_type:线条的类型。见cvLine的描述
shift:坐标点的小数点位数。

circle:画圆

 circle(image, Point(300, 300), 15, Scalar(255, 0, 0), 2, 8, 0);

img为图像

center为圆心坐标

radius为圆的半径

color为设定圆的颜色,规则根据B(蓝)G(绿)R(红)

thickness 如果是正数,表示组成圆的线条的粗细程度。否则,-1表示圆是否被填充

line_type 线条的类型。默认是8

shift 圆心坐标点和半径值的小数点位数

line:画线

 line(image, Point(200, 200), Point(300, 300), Scalar(0, 255, 0), 2, LINE_AA, 0);//反锯齿

第一个参数img:要划的线所在的图像;

第二个参数pt1:直线起点

第二个参数pt2:直线终点

第三个参数color:直线的颜色 e.g:Scalor(0,0,255)

第四个参数thickness=1:线条粗细

第五个参数line_type=8,

8 (or 0) - 8-connected line(8邻接)连接 线。
   4 - 4-connected line(4邻接)连接线。

CV_AA - antialiased 线条。抗锯齿

第六个参数:坐标点的小数点位数。

ellipse:画椭圆

RotatedRect rrt;rrt.center = Point(200, 200);rrt.size = Size(100, 200);rrt.angle = 90.0;ellipse(image, rrt, (0, 0, 0), 2, 8);

img:图像。
center:椭圆圆心坐标。
axes:轴的长度。
angle:偏转的角度。
start_angle:圆弧起始角的角度。.
end_angle:圆弧终结角的角度。
color:线条的颜色。
thickness:线条的粗细程度。
line_type:线条的类型,见CVLINE的描述。
shift:圆心坐标点和数轴的精度。

setMouseCallback:

setMouseCallback("鼠标绘制", on_draw, (void*)(&image));
//回调函数
static void on_draw(int event, int x, int y, int flags, void* userdata)
{Mat image = *((Mat*)userdata);if (event == EVENT_LBUTTONDOWN){sp.x = x;sp.y = y;}else if (event == EVENT_LBUTTONUP){ep.x = x;ep.y = y;int dx = ep.x - sp.x;int dy = ep.y - sp.y;if (dx > 0 && dy > 0){Rect rect(sp.x, sp.y, dx, dy);rectangle(image, rect, Scalar(0, 0, 255), 2, 8, 0);imshow("鼠标绘制", image);imshow("ROI区域", temp(rect));//在temp上截取区域//为下一次绘画准备sp.x = -1;sp, y = -1;}}else if (event == EVENT_MOUSEMOVE){if (sp.x > 0 && sp.y > 0){ep.x = x;ep.y = y;int dx = ep.x - sp.x;int dy = ep.y - sp.y;if (dx > 0 && dy > 0){Rect rect(sp.x, sp.y, dx, dy);temp.copyTo(image);rectangle(image, rect, Scalar(0, 0, 255), 2, 8, 0);imshow("鼠标绘制", image);}}}
}
 void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)winname:窗口的名字onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针。 这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param);userdate:传给回调函数的参数 
void on_Mouse(int event, int x, int y, int flags, void* param);
event是 CV_EVENT_*变量之一
x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系)
flags是CV_EVENT_FLAG的组合, param是用户定义的传递到setMouseCallback函数调用的参数。

附常用的event:
EVENT_MOUSEMOVE

EVENT_LBUTTONDOWN

EVENT_RBUTTONDOWN

EVENT_LBUTTONUP

EVENT_RBUTTONUP

和标志位flags有关的:

EVENT_FLAG_LBUTTON

鼠标响应原文链接:https://blog.csdn.net/qq_29540745/article/details/52562101

normalize:归一化使数据在0-1范围内

 image.convertTo(image, CV_32F);//把三通道的CV_8UC3编程浮点类型 F换成S就是int类型 实现归一化//归一化之后 必须要进行这步操作才能显示 也就是说归一化之后 取值必须是O-1之间normalize(image, dst, 1.0, 0, NORM_MINMAX);

src:输入数组

dst:输出数组,支持原地运算

alpha:range normalization模式的最小值

beta:range normalization模式的最大值,不用于norm normalization(范数归一化)模式。

normType:归一化的类型,可以有以下的取值:

NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。

NORM_INF: 此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)

NORM_L1 :  归一化数组的L1-范数(绝对值的和)

NORM_L2: 归一化数组的(欧几里德)L2-范数

dtype:dtype为负数时,输出数组的type与输入数组的type相同;否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).

mask:操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。

convertTo:图像类型转换

 image.convertTo(image, CV_32F);//把三通道的CV_8UC3编程浮点类型 F换成S就是int类型 实现归一化//归一化之后 必须要进行这步操作才能显示 也就是说归一化之后 取值必须是O-1之间

dst:目的矩阵;
type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同;
scale:比例因子;
shift:将输入数组元素按比例缩放后添加的值;

resize:图像缩放

 resize(image, zoommin, Size(w / 2, h / 2), 0, 0, INTER_LINEAR);//最后的参数有四种方法 去他的csdn

InputArray src :输入,原图像,即待改变大小的图像;
OutputArray dst: 输出,改变后的图像。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
dsize:输出图像的大小。
如果这个参数不为0,那么就代表将原图像缩放到这个Size(width,height)指定的大小;如果这个参数为0,那么原图像缩放之后的大小就要通过下面的公式来计算:
dsize = Size(round(fxsrc.cols), round(fysrc.rows))

其中,fx和fy就是下面要说的两个参数,是图像width方向和height方向的缩放比例。
fx:width方向的缩放比例,如果它是0,那么它就会按照(double)dsize.width/src.cols来计算;
fy:height方向的缩放比例,如果它是0,那么它就会按照(double)dsize.height/src.rows来计算;

interpolation:这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,有以下几种:
INTER_NEAREST - 最邻近插值
INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
INTER_AREA - resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
INTER_CUBIC - 4x4像素邻域内的双立方插值
INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值

flip:镜像图像

 Mat dst;flip(image, dst, 0);imshow("上下翻转", dst);flip(image, dst, 1);imshow("左右翻转", dst);flip(image, dst, -1);imshow("上下左右翻转", dst);//对角线翻转

0:上下翻转

1:左右翻转

2:对角线翻转

getRotationMatrix2D:图像旋转

 M = getRotationMatrix2D(Point2f(w / 2, h / 2), 45, 1.0);//图像中心,旋转角度,缩放

Point2f center:表示旋转的中心点

double angle:表示旋转的角度

double scale:图像缩放因子

warpAffine:放射变换

  warpAffine(image, dst, M, Size(nw, nh), INTER_LINEAR, 0, Scalar(255, 0, 0));

src - 输入图像。
M - 变换矩阵。
dsize - 输出图像的大小。
flags - 插值方法的组合(int 类型!)
borderMode - 边界像素模式(int 类型!)
borderValue - (重点!)边界填充值; 默认情况下,它为0。

VideoCapture:视频读类

VideoCapture capture("D:/leishen.mp4");//0就是开摄像头
int frame_width = capture.get(CAP_PROP_FRAME_WIDTH);//set可以取分辨率 看相机支不支持
capture.read(frame);

VideoWriter:视频写类

 VideoWriter writer("D:/text.mp4", capture.get(CAP_PROP_FOURCC), fps, Size(frame_width, frame_height), true);
writer.write(frame);

文件的名称,格式,帧率,帧大小,是否彩色

calcHist:计算直方图通道

std::vector<Mat> bgr_plane;split(image, bgr_plane);// 定义参数变量const int channels[1] = { 0 };const int bins[1] = { 256 };//灰度级别float hranges[2] = { 0,255 };//通道取值范围const float* ranges[1] = { hranges };Mat b_hist;Mat g_hist;Mat r_hist;// 计算Blue, Green, Red通道的直方图calcHist(&bgr_plane[0], 1, 0, Mat(), b_hist, 1, bins, ranges);calcHist(&bgr_plane[1], 1, 0, Mat(), g_hist, 1, bins, ranges);calcHist(&bgr_plane[2], 1, 0, Mat(), r_hist, 1, bins, ranges);

onst Mat* images:输入图像

int nimages:输入图像的个数

const int* channels:需要统计直方图的第几通道

InputArray mask:掩膜,,计算掩膜内的直方图  ...Mat()

OutputArray hist:输出的直方图数组

int dims:需要统计直方图通道的个数

const int* histSize:指的是直方图分成多少个区间,就是 bin的个数

const float** ranges: 统计像素值得区间

bool uniform=true::是否对得到的直方图数组进行归一化处理

bool accumulate=false:在多个图像时,是否累计计算像素值得个数

normalize:归一化

 int hist_w = 512;int hist_h = 400;int bin_w = cvRound((double)hist_w / bins[0]);Mat histImage = Mat::zeros(hist_h, hist_w, CV_8UC3);// 归一化直方图数据normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());

src:输入数组

dst:输出数组,支持原地运算

alpha:range normalization模式的最小值

beta:range normalization模式的最大值,不用于norm normalization(范数归一化)模式。

normType

归一化的类型,可以有以下的取值:

NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。

NORM_INF: 此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)

NORM_L1 :  归一化数组的L1-范数(绝对值的和)

NORM_L2: 归一化数组的(欧几里德)L2-范数

dtype:dtype为负数时,输出数组的type与输入数组的type相同;否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).

mask:操作掩膜,用于指示函数是否仅仅对指定的元素进行操作

cvRound:返回跟参数最接近的整数值;

 line(histImage, Point(bin_w * (i - 1), hist_h - (b_hist.at<float>(i - 1))),Point(bin_w * (i), hist_h - cvRound(b_hist.at<float>(i))), Scalar(255, 0, 0), 2, 8, 0);

cvFloor:返回不大于参数的最大整数值;

cvCeil:返回不小于参数的最小整数值。

applyColorMap:伪彩色函数

applyColorMap(hist2d_image, hist2d_image, COLORMAP_JET);

最后一个参数:colormap(色度图)

equalizeHist:图像均衡化,用于提高图像的质量(增强对比度)

 Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);imshow("灰度图", gray);Mat dst;equalizeHist(gray, dst);imshow("均衡化", dst);

blur:blur的作用是对输入的图像src进行均值滤波后用dst输出。

 blur(image, dst, Size(3, 3), Point(-1, -1));//3X3的卷积 -1,-1是卷积和中心

第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片,但需要注意,待处理的图片深度应该为CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
第二个参数,OutputArray类型的dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。
第三个参数,Size类型(对Size类型稍后有讲解)的ksize,内核的大小。一般这样写Size( w,h )来表示内核的大小( 其中,w 为像素宽度, h为像素高度)。Size(3,3)就表示3x3的核大小,Size(5,5)就表示5x5的核大小
第四个参数,Point类型的anchor,表示锚点(即被平滑的那个点),注意他有默认值Point(-1,-1)。如果这个点坐标是负值的话,就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中心。
第五个参数,int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。
原文链接:https://blog.csdn.net/mao_hui_fei/article/details/79934269

GaussianBlur:高斯模糊

GaussianBlur(image, dst, Size(5, 5), 15);

src,输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一。

dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。

ksize,高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正数和奇数(并不能理解)。或者,它们可以是零的,它们都是由sigma计算而来。

sigmaX,表示高斯核函数在X方向的的标准偏差。

sigmaY,表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。
原文链接:https://blog.csdn.net/godadream/article/details/81568844

bilateralFilter:高斯双边模糊(美颜)

 bilateralFilter(image, dst, 0, 100, 10);

. InputArray src: 输入图像,可以是Mat类型,图像必须是8位或浮点型单通道、三通道的图像。
. OutputArray dst: 输出图像,和原图像有相同的尺寸和类型。
. int d: 表示在过滤过程中每个像素邻域的直径范围。如果这个值是非正数,则函数会从第五个参数sigmaSpace计算该值。
. double sigmaColor: 颜色空间过滤器的sigma值,这个参数的值月大,表明该像素邻域内有月宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
. double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着颜色相近的较远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当d>0时,d指定了邻域大小且与sigmaSpace五官,否则d正比于sigmaSpace.
. int borderType=BORDER_DEFAULT: 用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.
原文链接:https://blog.csdn.net/keith_bb/article/details/54427779

各位加油,为了我们的梦想,为了成为自己想要成为的人。

OpenCV入门函数API解析相关推荐

  1. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  2. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析

    [-] 一开胃菜之一  关于OpenCV的命名空间 二开胃菜之二  关于Mat类型 三图像的载入和显示 imread函数 namedWindow函数 imshow函数 四输出图像到文件imwrite函 ...

  3. OpenCV入门系列1:图像组成与OpenCV基本操作函数

    文章目录 前言 一.图像组成 1.1 图片与像素点 1.2 RGB颜色系统 1.3 图像数值转换原理 1.4 彩色图与灰度图 二.OpenCV函数验证 2.1 引入OpenCV库 2.2 读入彩色图片 ...

  4. 【Tensorflow入门教程一】纵观全局:tensorflow各函数块解析。

    作为深度学习的最热门工具之一,Tensorflow可以为我们的模型搭建以及数据运算带来极大的便利.作为一门工具,必不可少地是要对它有一个全局的了解.私以为,如果对它的整体的模块架构有一个了解的话,再结 ...

  5. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  6. OpenCV读写视频文件解析

    OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在OpenCV 中,VideoCapture 类 ...

  7. 【AI白身境】搞计算机视觉必备的OpenCV入门基础

    文章首发于微信公众号<有三AI> [AI白身境]搞计算机视觉必备的OpenCV入门基础 今天是新专栏<AI白身境>的第五篇. 曾经看过一个视频,树莓派自平衡机器人自动追着小球跑 ...

  8. 转载:【OpenCV入门教程之五】 分离颜色通道多通道图像混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) ...

  9. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析

    [OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...

最新文章

  1. flask学习笔记之blueprint
  2. android表格自动刷新,Android SwipeRefreshLayout 自动刷新
  3. java线程死锁 cpu 100%_一文学会Java死锁和CPU 100% 问题的排查技巧
  4. Linux(15)-C/C++、PHP、JAVA概述
  5. Redis中使用Lua语言
  6. 内蒙古全国计算机考试注意事项,2018年3月内蒙古自治区呼和浩特计算机等级考试注意事项...
  7. 全球IPv4地址正式耗尽!
  8. 数据库mysql,oracle,sqlite,mariadb 相关收藏
  9. javascript异步机制 — call stack
  10. 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
  11. 云主机-本地内网通信OPEN-V
  12. 疫情地图 | 如何制作百色新冠疫情分布行政区地图
  13. 三子棋小游戏(经过轻微改编可变为五子棋)
  14. studio 3t注册码脚本
  15. linux中三台主机之间互信,22、linux的ssh互信配置
  16. vcruntime140_1.dll丢失的解决方法(仅一招解决)
  17. postman接口关联
  18. Linux编程定时执行某函数
  19. [已更新]redmi3s+miui8+xposed sdk23
  20. 【从AWS亚马逊平台上的s3存储桶上下载文件到win10电脑上】

热门文章

  1. java如何进行数据封装_JAVA——封装
  2. [转]爆笑程序员的笑话集锦
  3. Win11文件资源管理器的浏览记录怎么删除教学
  4. 5分钟搭建图片压缩应用
  5. 把二进制流图片转换成MultipartFile文件
  6. [凡鸽鸽]《OC小白鸽01》初学OC的部分要点及输出“Hello Word”
  7. Coolorus 2.6色环调色PS插件设计师必备工具
  8. 日志模块的C语言实现
  9. spark数据清洗练习
  10. 用 Webpack 和 ES6 转换快速开发 Rails 的富客户端