halcon/c++接口基础 之 HALCON图像变量类

在HALCON/C++中,HObject是一个基类,可以表示图像变量。另外还有三种类继承自HObject.

  • Class HImage 处理图像
  • Class HRegion 处理区域
  • Class HXLD 处理多边形

Regions

一个region是图像平面坐标点的集合。这样一个区域不需要被连通,而且可能还有好多洞。a region可以比实际的图像大。区域在HALCON中可以用所谓的行程编码实现。类HRegion代表HALCON/C++中的一个区域。HRegion的成员函数如下(列举几个重要的):

  • HRegion(void)
    默认构造器。创造一个空的region,即region的面积是0.并不是所有的算子都可以将空region作为输入参数,例如一些shape property 操作。
  • HRegion(const HRegion &reg)
    拷贝构造函数
  • HRegion &operator = (const HRegion &reg)
    赋值运算符
  • void Display(const HWindow &w) const
    在一个窗口中输出region

区域的几何变换

  • HRegion operator * (double scale) const
    放缩区域到任何一个尺度。放缩中心为(0,0)
  • HRegion operator + (const HDPoint2D &point) const
    HRegion &operator += (const HDPoint2D &point)
    平移

区域的形态学处理:

  • HRegion operator >> (double radius) const
    HRegion &operator >>= (double radius)
    用一个圆腐蚀,同erosion_circle
  • HRegion operator << (double radius) const
    HRegion &operator <<= (double radius)
    用一个圆膨胀,同 dilation_circle.
  • HRegion &operator ++ (void)
    用一个含有五个点的十字交叉去膨胀。
  • HRegion &operator -- (void)
    用一个含有五个点的十字交叉去腐蚀。
  • HRegion operator + (const HRegion &reg) const
    HRegion &operator += (const HRegion &reg)
    与另一个区域的Minkowsky 加和, 同 minkowski_add1.
  • HRegion operator - (const HRegion &reg) const
    HRegion &operator -= (const HRegion &reg)
    与另一个区域的Minkowsky 减法, 同 minkowski_sub1.

区域的属性:

  • double Phi(void) const
    一个等价的椭圆的角度,同 elliptic_axis.
  • double Ra(void) const
    一个区域的等价的椭圆的长半轴,同 elliptic_axis.
  • double Rb(void) const
    一个区域的等价的椭圆的短半轴,同elliptic_axis.
  • long Area(void) const
    区域的面积,即所包含的像素数,见 area_center.
  • double X(void) const
    double Y(void) const
    区域的中心点坐标,见area_center.
  • HRectangle1 SmallestRectangle1(void) const
    区域的最小包围盒,此包围盒平行于坐标轴,同 smallest_rectangle1.
  • HBool In(const HDPoint2D &p) const
    检验一个点是否在区域内部,同 test_region_point.
  • HBool IsEmpty(void) const;
    检验区域是否为空,也就是区域面积是否为0

例1

 #include "HalconCpp.h"
using namespace Halcon;
void main()
{ HImage     image("E:\\halcon\\images\\mreut.png");              // Reading an aerial imageHRegion    region = image >= 190;       // Calculating a thresholdHWindow    w;                           // Display windoww.SetColor("red");                      // Set color for regionsregion.Display(w);                      // Display the regionHRegion    filled = region.FillUp();    // Fill holes in regionfilled.Display(w);                      // Display the region// Opening: erosion followed by a dilation with a circle maskHRegion    open = (filled >> 4.5) << 4.5;w.SetColor("green");                    // Set color for regionsopen.Display(w);                        // Display the regionHDPoint2D  trans(-100, -150);            // Vector for translationHRegion    moved = open + trans;       // TranslationHRegion    zoomed = moved * 2.0;        // Zooming the region
}

First, an aerial image (mreut.png) is read from a file. All pixels with a gray value ≥ 190 are selected. This results in one region (region). This region is transformed by the next steps: All holes in the region are filled (FillUp), small parts of the region are eliminated by two morphological operations, first an erosion, a kind of shrinking the region, followed by a dilation, a kind of enlarging the region. The last step is the zooming of the region. For that the region is first shifted by a translation vector ( − 100, − 150) to the upper left corner and then zoomed by the factor two. Figure 6.2 shows the input image and the result of the opening operation.

Region Arrays

HRegionArray是一个包含Region的容器。代表成员函数如下:

  • long Num(void)
    数列的个数,最大序号是Num() − 1.
  • HRegion const &operator [] (long index) const
    读取数组的第i个元素,序号是 0 … Num() − 1.
  • HRegion &operator [] (long index)
    将一个region赋值给区域的第j个元素,The index index can be ≥ Num().
  • HRegionArray operator () (long min, long max) const
    选取介于min与max之间的数据
  • HRegionArray &Append(const HRegion &reg)
    将一个region附加到region array的后面

许多接受region的算子都接受region array作为输入参数。如形态学操作。

例2

#include "HalconCpp.h"
using namespace Halcon;
void main()
{ HImage        image("E:\\halcon\\images\\control_unit.png");       // Reading an image from file// Segmentation by regiongrowingHRegionArray  regs = image.Regiongrowing(1, 1, 4, 100);HWindow       w;                           // Display windoww.SetColored(12);                          // Set colors for regionsregs.Display(w);                           // Display the regionsHRegionArray  rect;                        // New arrayfor (long i = 0; i < regs.Num(); i++)      // For all regions in array{ // Test size and shape of each regionif ((regs[i].Area() > 1000) && (regs[i].Compactness() < 1.5))rect.Append(regs[i]);                  // If test true, append region}image.Display(w);                          // Display the imagerect.Display(w);                           // Display resulting regions}


原图

变换后图像
The first step is to read an image. In this case it shows a control unit in a manufacturing environment, see figure 6.4 on the left side. By applying a regiongrowing algorithm from the HALCON library the image is segmented into regions. Each region inside the resulting region array regs is now selected according to its size and its compactness. Each region of a size larger than 1000 pixels and of a compactness value smaller than 1.5 is appended to the region array rect. After the processing of the for loop only the regions showing on the right side of figure 6.4 are left.

Images

在Halcon中,矩阵叫做通道,一个图像可能由若干个通道组成。比如灰度图像由一个通道,而彩色图像由3个通道组成。通道的类型不仅仅是8位(btype),而且可以有其他类型(比如16 int2)以及实数类型。除了保存像素信息,每一个HALCON图像也存储所谓的domain,就是上面介绍的那种Region格式。region可以理解为感兴趣的区域,即ROI。一般除了些许异常外,halcon算子都运行在region上处理。这一点与sepera相同。

Image Objects

类HImage是所有继承的图像类的根类。通过使用HImage,所有不同的像素类型都可以被以统一的格式处理(多态性)。类HImage不是虚类,因此可以被实例化。如下列举了几个重要的成员函数:

  • HImage(void)
    默认构造函数,空的图像。
  • HImage(const char* file)
    从一个文件中读取图像,同read_image
  • HImage(int width,int height,const char* type)
    构造一幅图像,指定了大小和类型。同gen_image_const
  • HImage(void *ptr, int width, int height, const char *type)
    构造一幅图像,使用拷贝的方式,指定图像的大小和类型,同gen_image1.
  • irtual const char *PixType(void) const
    像素类型,同 get_image_type.
  • int Width(void) const
    图像宽,见get_image_size.
  • int Height(void) const
    图像高,见 get_image_size.
  • HPixVal GetPixVal(int x, int y) const
    获取(x,y)处的像素值,见 get_grayval.
  • HPixVal GetPixVal(long k) const
    线性获得第k个像素值
  • virtual void SetPixVal(int x, int y, const HPixVal &val)
    设置第(x,y)个像素值,同 set_grayval.
  • virtual void SetPixVal(long k, const HPixVal &val)
    设置第k个像素值
  • virtual void Display(const HWindow &w) const
    在一个窗口上显示图像

几何运算
- HImage operator & (const HRegion &reg) const
裁剪图像的一部分区域,然后返回此部分的图像。同reduce_domain.
点评: 此函数设计的还是很好的,比较符合直觉。一幅图像与区域做&运算,就是获取共同的部分,也就是裁剪后的图像。

  • HImage operator + (const HImage &add) const
    图像相加,同 add_image.
  • HImage operator - (const HImage &sub) const
    图像相减,同 sub_image.
  • HImage operator * (const HImage &mult) const
    图像相乘,同 mult_image.
  • HImage operator - (void) const
    图像取反, invert_image.
  • HImage operator + (double add) const
    HImage operator - (double sub) const
    HImage operator * (double mult) const
    HImage operator / (double div) const
    图像加减乘除,同scale_image
  • HRegion operator >= (const HImage &image) const
    HRegion operator <= (const HImage &image) const
    Selecting all pixel with gray values brighter than or equal to (or darker than or equal to, respectively) those of the input image, see**dyn_threshold**
    点评:动态阈值,局部阈值处理,一般和均指图像做比较。
  • HRegion operator >= (double thresh) const
    HRegion operator <= (double thresh) const
    HRegion operator == (double thresh) const
    HRegion operator != (double thresh) const
    阈值处理,同 threshold.

例3

#include "HalconCpp.h"
using namespace Halcon;
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
void main()
{HImage   image("E:\\halcon\\images\\mreut.png");        // Aerial imageHWindow  w;                                 // Output windowimage.Display(w);                           // Display image// Returning the size of the imagecout << "width  = " << image.Width();cout << "height = " << image.Height() << endl;// Interactive drawing of a region by using the mouse HRegion  mask = w.DrawRegion();// Reduce the domain of the image to the maskHImage   reduced = image & mask;w.ClearWindow();                            // Clear the windowreduced.Display(w);                         // Display the reduced image// Applying the mean filter in the reduced imageHImage   mean = reduced.MeanImage(61, 61);mean.Display(w);HRegion  reg = reduced <= (mean -3);reg.Display(w);
}


本例首先从文件中读取一幅灰度图像,目的是提取暗的部分。截取部分区域处理只是为了节省时间。可以通过鼠标任意画出部分区域来选择我们处理的部分图像区域。这部分区域掩模用于作为输入去截取图像(运算符&).带有61x61大小的均指掩模被应用于最后截取的图像获得均值图像。暗的像素通过应用算子<= 选取。所有的像素不超过均值-3的都选取。 具体可以参考 dyn_threshold.

Pixel Values

HPixVal被用来访问类HImage的像素值。灰度值可以独立于他们的类型而返回和设置。
如下介绍常见的成员函数:

//构造
HPixVal(void)
Default constructor. 
HPixVal(const HComplex &Val)
Constructing a pixel value from a complex number. 
HPixVal(int Val)
Constructing a pixel value from an integer (int). 
HPixVal(long Val)
Constructing a pixel value from a long (long). 
HPixVal(HByte Val)
Constructing a pixel value from a byte (byte). 
HPixVal(double Val)
Constructing a pixel value from a double (double). 
HPixVal(const HPixVal &Val)
Copy constructor. 
HPixVal &operator = (const HPixVal &grey)
Assignment operator. 
operator HByte(void) const
Converting a pixel value to byte (0255). //强制转换
operator int(void) const
Converting a pixel value to int. 
operator long(void) const
Converting a pixel value to long. 
operator double(void) const
Converting a pixel value to double. 
operator HComplex(void) const
Converting a pixel value to Complex. 

例4

#include "HalconCpp.h"
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
using namespace Halcon;void  main()
{HByteImage  in("E:\\halcon\\images\\mreut.png");         // Aerial imageHWindow w;                       // Output windowin.Display(w);                   // Displaying the imageHByteImage out = in;             // Copying the imageint  width = out.Width();       // Width of the imageint  height = out.Height();      // Height of the imagelong end = width * height;    // Number of pixel of the image// 1. run: linear accessingfor (long k = 0; k < end; k++) {int pix = in.GetPixVal(k);     // Reading the pixelout.SetPixVal(k, 255 - pix);      // Setting the pixel}// Displaying the transformationcout << "Transformed !" << endl;  out.Display(w);   w.Click();cout << "Original !" << endl;  in.Display(w);    w.Click();// 2. run: accessing the image via the coordinates (x,y)for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {int pix = in.GetPixVal(x, y); // Reading the pixelout.SetPixVal(x, y, 255 - pix);  // Setting the pixel}}// Displaying the transformationcout << "Transformed !" << endl;  out.Display(w);   w.Click();cout << "Original !" << endl;  in.Display(w);    w.Click();
}

类HPixVal可以由上面的例子(图像取反)说明。 输入图像是一个灰度图像。首先一幅图像被复制,并且获得了图像大小。第一次运行,像素线性获得。第二次运行像素值通过(x,y)坐标获得。

点评: 本例的实质是观察int与HPixVal的隐式转换。首先SetPixVal的第三个参数应该是HPixVal,但是输入实际上是int,由于类HPixVal提供了HPixVal(int Val)的构造函数,使得隐式转换可以成功。后面GetPixVal获取像素,又由于类HPixVal提供了operator int(void) const的转换函数,使得int pix = in.GetPixVal(k);是有效的。

Image Arrays

同之前定义region的数组,HImage也定义了其数组,即HImageArray.
成员函数如下:


HImageArray(void)
Default constructor: empty array, no element. HImageArray(const HImage &reg)
Constructing an image array from a single image. HImageArray(const HImageArray &arr)
Copy constructor. ~HImageArray(void)
Destructor. HImageArray &operator = (const HImageArray &arr)
Assignment operator. long Num(void) const
Returning the number of elements in the array. HImage const &operator [] (long index) const 
Reading the element i of the array. The index is in the range 0 … Num() − 1.HImage &operator [] (long index)
Assigning an image to the element i of the array. The index index can beNum(). HImageArray operator () (long min, long max)
Selecting a subset between the lower min and upper max index. HImageArray &Append(const HImage &image)
Appending another image to the image array. HImageArray &Append(const HImageArray &images)
Appending another image array to the image array. 

Byte Image

对于每一个像素类型,存在着从HImage继承的图像类,如对于像素类型byte(standard 8 bit),对应着HByteImage;对于像素类型int2(signed 16 bit),对应着HInt2Image。但是使用最广泛的是HByteImage,基本上覆盖了图像处理的大部分领域。HByteImage相对于HImage的优点是简化了像素值的访问机制。主要是因为HPixVal不再使用。除了HImage的成员函数外,HByteImage还包含了以下扩展:


像素的设置和获得

  • HByte &operator[] (long k)
    线性设置第k个像素
  • HByte operator[] (long k) const
    线性读取第k个像素
  • HByte &operator() (long k)
    线性设置第k个像素
  • HByte operator() (long k) const
    线性读取第k个像素
  • HByte &operator()(int x, int y)
    通过坐标(x,y)设置像素
  • HByte operator()(int x, int y) const
    阅读坐标(x,y)处的像素

位运算

  • HByteImage operator & (int i)
    与i与运算
  • HByteImage operator << (int i)
    每个像素做左移i位.
  • HByteImage operator >> (int i)
    每个像素右移i位
  • HByteImage operator ~ (void)
    对每个像素去补
  • HByteImage operator & (HByteImage &ima)
    两图像对应像素取 &
  • HByteImage operator | (HByteImage &ima)
    两图像对应像素取 |
  • HByteImage operator ^ (HByteImage &ima)
    两图像对应像素取 异或
    例5
#include "HalconCpp.h"
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
using namespace Halcon;void  main()
{HByteImage  in("E:\\halcon\\images\\mreut.png");         // Aerial imageHWindow w;                       // Output windowin.Display(w);                   // Displaying the imageHByteImage out = in;             // Copying the imageint  width = out.Width();       // Width of the imageint  height = out.Height();      // Height of the imagelong end = width * height;    // Number of pixel of the image// 1. run: linear accessingfor (long k = 0; k < end; k++) {out[k] = 255 - in[k];      // Setting the pixel}// Displaying the transformationcout << "Transformed !" << endl;  out.Display(w);   w.Click();cout << "Original !" << endl;  in.Display(w);    w.Click();// 2. run: accessing the image via the coordinates (x,y)for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {out(x, y) = 255 - in(x, y);  // Setting the pixel}}// Displaying the transformationcout << "Transformed !" << endl;  out.Display(w);   w.Click();cout << "Original !" << endl;  in.Display(w);    w.Click();
}

本例是例4的改造版,看起来更简洁,更像C语言的风格。访问像素不再需要get/set格式。

XLD Objects

XLD是eXtented Line Description的简称。这种数据结构可以描述areas(即任意大小的区域或者多边形)or 任何封闭的或者打开的轮廓。与regions代表像素精度相反,XLD代表的是亚像素精度。其中有两种基本的XLD结构: 轮廓(contours)和 多边形(polygons).

与图像相似,HALCON/C++也提供了基类HXLD和一些继承自HXLD的特殊类,比如HXLDCont用于轮廓,HXLDPoly用于多边形。另外也存在一个容器类,即HXLDArray.

Low—Level Iconic Objects

当以面向过程的方式调用算子时,Hobject可以被用来代表所有的图像参数,如 an image,a region,an image array.事实上,Hobject是HALCON访问内部数据的基类。并且,Hobejct也可作为HObject和HObject继承类,如HImage的基类。

Hobject有如下的成员函数:

Hobject(void)
Default constructor. Hobject(const Hobject &obj)
Copy constructor.virtual ~Hobject(void)
Destructor. Hobject &operator = (const Hobject &obj)
Assignment operator. void Reset(void)
Freeing the memory and resetting the corresponding database key. 

正如前面所讲,Hobject的对象也可以包含一个图像数据的数组。但是不幸的是,Hobject没有特殊的函数区增加和选择数组成员,取而代之的是,你必须使用“The Tuple Mode”.一节所描述的算子gen_empty_obj, concat_obj, select_obj, and count_obj 代替。


打赏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手求大神,有其他swit-case的思路写这个程序么?

两个程序: switch-case与if-else if的区别相同点:可以实现多分支结构;不同点:switch:一般只能用于等值比较.(可以进行范围运算???---学会用switch计算范围出炉的思路____待解决)if_else if:可以处理范围计算. switch(变量) { case 变量: break; } switch括号中的"变量…

netty简单笔记

2019独角兽企业重金招聘Python工程师标准>>> Server package com.netty;import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFuture; import io.netty.channel.Channel…

halcon/c++接口基础 之 控制参数

HALCON/C可以处理各种不同类型的字母数字混合的控制参数&#xff0c;如下&#xff1a; 离散数字&#xff08;long&#xff09;浮点数字&#xff08;double&#xff09;字符串&#xff08;char*&#xff09; 控制参数的一个特殊形式是句柄&#xff0c;提供了途径去访问复杂的数…

Java编程的逻辑 (84) - 反射

​本系列文章经补充和完善&#xff0c;已修订整理成书《Java编程的逻辑》&#xff0c;由机械工业出版社华章分社出版&#xff0c;于2018年1月上市热销&#xff0c;读者好评如潮&#xff01;各大网店和书店有售&#xff0c;欢迎购买&#xff0c;京东自营链接&#xff1a;http://…

灰度图像的8位平面分解

所谓灰度图像&#xff0c;即指8位256颜色的图像。将图像的每一位分别取出来&#xff0c;我们就可以将一幅图像分解开来&#xff0c;形成8幅图像。下面我们分别介绍使用matlab分解图像与使用halcon/c分解图像的方法。 matlab8位分解 clc; clear all; A imread(lena.tif); % 显…

css 横线_atom.css正式发布,从此跟CSS框架说拜拜。

atom.css 大家好&#xff0c;我写了一个css库atom.css&#xff0c;蛮好用的&#xff0c;所以忍不住分享给大家。(https://github.com/MatrixAge/atom.css)起因写HTML几年了&#xff0c;再到如今的JSX&#xff0c;最大的感受不是枯燥&#xff0c;而是眼花。写样式的时候&#xf…

halcon模板匹配学习(一) Matching 初印象

什么是模板匹配呢&#xff1f;简单而言&#xff0c;就是在图像中寻找目标图像&#xff08;模板&#xff09;&#xff0c;或者说&#xff0c;就是在图像中寻找与模板图像相似部分的一种图像处理技术。依赖于选择的方法不同&#xff0c;模板匹配可以处理各种情形下的变换&#xf…

第五章 面向方面编程___AOP入门

上一篇讲了 AOP 和 OOP 的区别&#xff0c;这一次我们开始入门 AOP 。实现面向方面编程的技术&#xff0c;主要分为两大类&#xff1a; 一是 采用动态代理技术&#xff0c;利用截取消息的方式&#xff0c;对该消息进行装饰&#xff0c;以取代原有对象行为的执行&#xff1b; 二…

java将xml中的标签名称转为小写_深入学习Java Web(七): JSTL标签库

本文转自与博客园一杯凉茶的博客.在之前我们学过在JSP页面上为了不使用脚本&#xff0c;所以我们有了JSP内置的行为、行为只能提供一小部分的功能&#xff0c;大多数的时候还是会用java脚本&#xff0c;接着就使用了EL表达式&#xff0c;基本上EL表达式看似能满足我们的要求&am…

halcon模板匹配学习(二) 准备模板

如下&#xff0c;我们将介绍匹配的第一个操作&#xff1a;准备模板 初始时刻&#xff0c;我们准备好参考图像&#xff0c;并对其做一定的处理&#xff0c;然后我们需要从参考图像中导出模板&#xff0c;也就是将参考图像裁剪成所谓的模板图像。获取模板图像可以通过设置ROI来完…

揭秘继承技术之虚函数

虚函数 调用虚函数时函数行为将根据对象所属类的不同而变化。 父类指针或引用指向子类对象时&#xff0c;可访问子类重写方法&#xff08; virtual函数&#xff09;但无法访问在父类中没有定义的子类方法和数据成员。 #include <iostream>using namespace std;class Supe…

js 数组移除_2020前端面试--常见的js面试题

&#xff08;答案持续更新...&#xff09; 1.简述同步和异步的区别js是一门单线程语言&#xff0c;所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任务完成&#xff0c;再执行后面一个任务&#xf…

spring-自动加载配置文件\使用属性文件注入

在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.xml,需要引入一些依赖项: 1 <project xmlns"http://maven.apache.org/POM/4.0.0" x…

pygame碰撞检测

最近在学Pygame,花一段时间做了一个异常简陋版的"打砖块". 这次重点说一下困扰我比较长时间的碰撞检测(个人太菜..). 按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的…

2017-5-4 进程

进程&#xff1a;一个应用程序就是一个进程开启某个进程Process.Start("文件缩写名");通过绝对路径开启某个进程Process p new Process();p.StartInfo new ProcessStartInfo("要打开的程序绝对路径");p.Start(); 获取全部开启的进程&#xff1a;Process.…

c++分治法求最大最小值实现_程序员:算法导论,分治法、归并排序,伪代码和Java实现...

分治法我们首先先介绍分治法。分治法的思想&#xff1a;将原问题分解为几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题&#xff0c;然后在合并这些子问题的解来解决原问题的解。还是拿扑克牌举例子&#xff0c;假设桌上有两堆牌面朝上的牌(牌面朝上&…

halcon相关的链接

论坛、培训 halcon学习网&#xff1a;http://www.ihalcon.com/鸟叔机器视觉&#xff1a;http://bbs.szvbt.com/forum.php 博客 韩兆新的博客园majunfuLife and Codingzhaojun的博客風韻無聲骑蚂蚁上高速的博客小马_xiaoLV2小新识图程序园-程序员的世界章柯渊的博客 注&…

python opencv图像处理程序_Python-OpenCV学习(四):基本图像处理

转载请注明出处&#xff1a;danscarlett的博客园 参考资料&#xff1a; 目录&#xff1a; 读取 imread 显示 imshow 存储 imwrite 缩放 resize 加边框 copyMakeBorder 裁剪 img[x_start:x_end,y_start:y_end] 1.图像读取&#xff1a; cv2.imread(fileName,flagsNone) 函数功能&…

分针网——怎么轻松学习JavaScript

js给初学者的印象总是那么的“杂而乱”&#xff0c;相信很多初学者都在找轻松学习js的途径。我试着总结自己学习多年js的经验&#xff0c;希望能给后来的学习者探索出一条“轻松学习js之路”。js给人那种感觉的原因多半是因为它如下的特点&#xff1a;A&#xff1a;本身知识很抽…

python时间序列分析航空旅人_用python做时间序列预测一:初识概念

利用时间序列预测方法&#xff0c;我们可以基于历史的情况来预测未来的情况。比如共享单车每日租车数&#xff0c;食堂每日就餐人数等等&#xff0c;都是基于各自历史的情况来预测的。 什么是时间序列&#xff1f; 时间序列&#xff0c;是指同一个变量在连续且固定的时间间隔上…