Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
f056e713
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f056e713
编写于
1月 18, 2018
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10512 from sturkmen72:update_documentation
上级
aa55cdb7
dcd4f8f5
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
452 addition
and
401 deletion
+452
-401
modules/core/include/opencv2/core.hpp
modules/core/include/opencv2/core.hpp
+50
-73
modules/core/include/opencv2/core/types.hpp
modules/core/include/opencv2/core/types.hpp
+36
-44
modules/imgcodecs/include/opencv2/imgcodecs.hpp
modules/imgcodecs/include/opencv2/imgcodecs.hpp
+1
-42
modules/imgproc/include/opencv2/imgproc.hpp
modules/imgproc/include/opencv2/imgproc.hpp
+252
-227
samples/cpp/tutorial_code/ImgTrans/imageSegmentation.cpp
samples/cpp/tutorial_code/ImgTrans/imageSegmentation.cpp
+6
-6
samples/cpp/tutorial_code/snippets/core_reduce.cpp
samples/cpp/tutorial_code/snippets/core_reduce.cpp
+9
-9
samples/cpp/tutorial_code/snippets/core_various.cpp
samples/cpp/tutorial_code/snippets/core_various.cpp
+53
-0
samples/cpp/tutorial_code/snippets/imgcodecs_imwrite.cpp
samples/cpp/tutorial_code/snippets/imgcodecs_imwrite.cpp
+45
-0
未找到文件。
modules/core/include/opencv2/core.hpp
浏览文件 @
f056e713
此差异已折叠。
点击以展开。
modules/core/include/opencv2/core/types.hpp
浏览文件 @
f056e713
...
@@ -75,7 +75,7 @@ template<typename _Tp> class Complex
...
@@ -75,7 +75,7 @@ template<typename _Tp> class Complex
{
{
public:
public:
//!
constructors
//!
default constructor
Complex
();
Complex
();
Complex
(
_Tp
_re
,
_Tp
_im
=
0
);
Complex
(
_Tp
_re
,
_Tp
_im
=
0
);
...
@@ -159,7 +159,7 @@ template<typename _Tp> class Point_
...
@@ -159,7 +159,7 @@ template<typename _Tp> class Point_
public:
public:
typedef
_Tp
value_type
;
typedef
_Tp
value_type
;
//
various constructors
//
! default constructor
Point_
();
Point_
();
Point_
(
_Tp
_x
,
_Tp
_y
);
Point_
(
_Tp
_x
,
_Tp
_y
);
Point_
(
const
Point_
&
pt
);
Point_
(
const
Point_
&
pt
);
...
@@ -181,8 +181,8 @@ public:
...
@@ -181,8 +181,8 @@ public:
double
cross
(
const
Point_
&
pt
)
const
;
double
cross
(
const
Point_
&
pt
)
const
;
//! checks whether the point is inside the specified rectangle
//! checks whether the point is inside the specified rectangle
bool
inside
(
const
Rect_
<
_Tp
>&
r
)
const
;
bool
inside
(
const
Rect_
<
_Tp
>&
r
)
const
;
_Tp
x
;
//!< x coordinate of the point
_Tp
x
,
y
;
//< the point coordinates
_Tp
y
;
//!< y coordinate of the point
};
};
typedef
Point_
<
int
>
Point2i
;
typedef
Point_
<
int
>
Point2i
;
...
@@ -239,7 +239,7 @@ template<typename _Tp> class Point3_
...
@@ -239,7 +239,7 @@ template<typename _Tp> class Point3_
public:
public:
typedef
_Tp
value_type
;
typedef
_Tp
value_type
;
//
various constructors
//
! default constructor
Point3_
();
Point3_
();
Point3_
(
_Tp
_x
,
_Tp
_y
,
_Tp
_z
);
Point3_
(
_Tp
_x
,
_Tp
_y
,
_Tp
_z
);
Point3_
(
const
Point3_
&
pt
);
Point3_
(
const
Point3_
&
pt
);
...
@@ -262,8 +262,9 @@ public:
...
@@ -262,8 +262,9 @@ public:
double
ddot
(
const
Point3_
&
pt
)
const
;
double
ddot
(
const
Point3_
&
pt
)
const
;
//! cross product of the 2 3D points
//! cross product of the 2 3D points
Point3_
cross
(
const
Point3_
&
pt
)
const
;
Point3_
cross
(
const
Point3_
&
pt
)
const
;
_Tp
x
;
//!< x coordinate of the 3D point
_Tp
x
,
y
,
z
;
//< the point coordinates
_Tp
y
;
//!< y coordinate of the 3D point
_Tp
z
;
//!< z coordinate of the 3D point
};
};
typedef
Point3_
<
int
>
Point3i
;
typedef
Point3_
<
int
>
Point3i
;
...
@@ -316,7 +317,7 @@ template<typename _Tp> class Size_
...
@@ -316,7 +317,7 @@ template<typename _Tp> class Size_
public:
public:
typedef
_Tp
value_type
;
typedef
_Tp
value_type
;
//!
various constructors
//!
default constructor
Size_
();
Size_
();
Size_
(
_Tp
_width
,
_Tp
_height
);
Size_
(
_Tp
_width
,
_Tp
_height
);
Size_
(
const
Size_
&
sz
);
Size_
(
const
Size_
&
sz
);
...
@@ -331,7 +332,8 @@ public:
...
@@ -331,7 +332,8 @@ public:
//! conversion of another data type.
//! conversion of another data type.
template
<
typename
_Tp2
>
operator
Size_
<
_Tp2
>
()
const
;
template
<
typename
_Tp2
>
operator
Size_
<
_Tp2
>
()
const
;
_Tp
width
,
height
;
// the width and the height
_Tp
width
;
//!< the width
_Tp
height
;
//!< the height
};
};
typedef
Size_
<
int
>
Size2i
;
typedef
Size_
<
int
>
Size2i
;
...
@@ -416,7 +418,7 @@ template<typename _Tp> class Rect_
...
@@ -416,7 +418,7 @@ template<typename _Tp> class Rect_
public:
public:
typedef
_Tp
value_type
;
typedef
_Tp
value_type
;
//!
various constructors
//!
default constructor
Rect_
();
Rect_
();
Rect_
(
_Tp
_x
,
_Tp
_y
,
_Tp
_width
,
_Tp
_height
);
Rect_
(
_Tp
_x
,
_Tp
_y
,
_Tp
_width
,
_Tp
_height
);
Rect_
(
const
Rect_
&
r
);
Rect_
(
const
Rect_
&
r
);
...
@@ -442,7 +444,10 @@ public:
...
@@ -442,7 +444,10 @@ public:
//! checks whether the rectangle contains the point
//! checks whether the rectangle contains the point
bool
contains
(
const
Point_
<
_Tp
>&
pt
)
const
;
bool
contains
(
const
Point_
<
_Tp
>&
pt
)
const
;
_Tp
x
,
y
,
width
,
height
;
//< the top-left corner, as well as width and height of the rectangle
_Tp
x
;
//!< x coordinate of the top-left corner
_Tp
y
;
//!< y coordinate of the top-left corner
_Tp
width
;
//!< width of the rectangle
_Tp
height
;
//!< height of the rectangle
};
};
typedef
Rect_
<
int
>
Rect2i
;
typedef
Rect_
<
int
>
Rect2i
;
...
@@ -481,24 +486,10 @@ struct Type< Rect_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) };
...
@@ -481,24 +486,10 @@ struct Type< Rect_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) };
/** @brief The class represents rotated (i.e. not up-right) rectangles on a plane.
/** @brief The class represents rotated (i.e. not up-right) rectangles on a plane.
Each rectangle is specified by the center point (mass center), length of each side (represented by
Each rectangle is specified by the center point (mass center), length of each side (represented by
cv::
Size2f structure) and the rotation angle in degrees.
#
Size2f structure) and the rotation angle in degrees.
The sample below demonstrates how to use RotatedRect:
The sample below demonstrates how to use RotatedRect:
@code
@snippet snippets/core_various.cpp RotatedRect_demo
Mat image(200, 200, CV_8UC3, Scalar(0));
RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30);
Point2f vertices[4];
rRect.points(vertices);
for (int i = 0; i < 4; i++)
line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0));
Rect brect = rRect.boundingRect();
rectangle(image, brect, Scalar(255,0,0));
imshow("rectangles", image);
waitKey(0);
@endcode
![image](pics/rotatedrect.png)
![image](pics/rotatedrect.png)
@sa CamShift, fitEllipse, minAreaRect, CvBox2D
@sa CamShift, fitEllipse, minAreaRect, CvBox2D
...
@@ -506,9 +497,9 @@ The sample below demonstrates how to use RotatedRect:
...
@@ -506,9 +497,9 @@ The sample below demonstrates how to use RotatedRect:
class
CV_EXPORTS
RotatedRect
class
CV_EXPORTS
RotatedRect
{
{
public:
public:
//!
various constructors
//!
default constructor
RotatedRect
();
RotatedRect
();
/**
/**
full constructor
@param center The rectangle mass center.
@param center The rectangle mass center.
@param size Width and height of the rectangle.
@param size Width and height of the rectangle.
@param angle The rotation angle in a clockwise direction. When the angle is 0, 90, 180, 270 etc.,
@param angle The rotation angle in a clockwise direction. When the angle is 0, 90, 180, 270 etc.,
...
@@ -529,10 +520,12 @@ public:
...
@@ -529,10 +520,12 @@ public:
Rect
boundingRect
()
const
;
Rect
boundingRect
()
const
;
//! returns the minimal (exact) floating point rectangle containing the rotated rectangle, not intended for use with images
//! returns the minimal (exact) floating point rectangle containing the rotated rectangle, not intended for use with images
Rect_
<
float
>
boundingRect2f
()
const
;
Rect_
<
float
>
boundingRect2f
()
const
;
//! returns the rectangle mass center
Point2f
center
;
//< the rectangle mass center
Point2f
center
;
Size2f
size
;
//< width and height of the rectangle
//! returns width and height of the rectangle
float
angle
;
//< the rotation angle. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle.
Size2f
size
;
//! returns the rotation angle. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle.
float
angle
;
};
};
template
<
>
class
DataType
<
RotatedRect
>
template
<
>
class
DataType
<
RotatedRect
>
...
@@ -637,7 +630,7 @@ OpenCV to pass pixel values.
...
@@ -637,7 +630,7 @@ OpenCV to pass pixel values.
template
<
typename
_Tp
>
class
Scalar_
:
public
Vec
<
_Tp
,
4
>
template
<
typename
_Tp
>
class
Scalar_
:
public
Vec
<
_Tp
,
4
>
{
{
public:
public:
//!
various constructors
//!
default constructor
Scalar_
();
Scalar_
();
Scalar_
(
_Tp
v0
,
_Tp
v1
,
_Tp
v2
=
0
,
_Tp
v3
=
0
);
Scalar_
(
_Tp
v0
,
_Tp
v1
,
_Tp
v2
=
0
,
_Tp
v3
=
0
);
Scalar_
(
_Tp
v0
);
Scalar_
(
_Tp
v0
);
...
@@ -654,10 +647,10 @@ public:
...
@@ -654,10 +647,10 @@ public:
//! per-element product
//! per-element product
Scalar_
<
_Tp
>
mul
(
const
Scalar_
<
_Tp
>&
a
,
double
scale
=
1
)
const
;
Scalar_
<
_Tp
>
mul
(
const
Scalar_
<
_Tp
>&
a
,
double
scale
=
1
)
const
;
// returns (v0, -v1, -v2, -v3)
//
!
returns (v0, -v1, -v2, -v3)
Scalar_
<
_Tp
>
conj
()
const
;
Scalar_
<
_Tp
>
conj
()
const
;
// returns true iff v1 == v2 == v3 == 0
//
!
returns true iff v1 == v2 == v3 == 0
bool
isReal
()
const
;
bool
isReal
()
const
;
};
};
...
@@ -695,14 +688,13 @@ struct Type< Scalar_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) }
...
@@ -695,14 +688,13 @@ struct Type< Scalar_<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 4) }
/** @brief Data structure for salient point detectors.
/** @brief Data structure for salient point detectors.
The class instance stores a keypoint, i.e. a point feature found by one of many available keypoint
The class instance stores a keypoint, i.e. a point feature found by one of many available keypoint
detectors, such as Harris corner detector, cv::FAST, cv::StarDetector, cv::SURF, cv::SIFT,
detectors, such as Harris corner detector, #FAST, %StarDetector, %SURF, %SIFT etc.
cv::LDetector etc.
The keypoint is characterized by the 2D position, scale (proportional to the diameter of the
The keypoint is characterized by the 2D position, scale (proportional to the diameter of the
neighborhood that needs to be taken into account), orientation and some other parameters. The
neighborhood that needs to be taken into account), orientation and some other parameters. The
keypoint neighborhood is then analyzed by another algorithm that builds a descriptor (usually
keypoint neighborhood is then analyzed by another algorithm that builds a descriptor (usually
represented as a feature vector). The keypoints representing the same object in different images
represented as a feature vector). The keypoints representing the same object in different images
can then be matched using
cv::
KDTree or another method.
can then be matched using
%
KDTree or another method.
*/
*/
class
CV_EXPORTS_W_SIMPLE
KeyPoint
class
CV_EXPORTS_W_SIMPLE
KeyPoint
{
{
...
@@ -808,9 +800,9 @@ public:
...
@@ -808,9 +800,9 @@ public:
CV_WRAP
DMatch
(
int
_queryIdx
,
int
_trainIdx
,
float
_distance
);
CV_WRAP
DMatch
(
int
_queryIdx
,
int
_trainIdx
,
float
_distance
);
CV_WRAP
DMatch
(
int
_queryIdx
,
int
_trainIdx
,
int
_imgIdx
,
float
_distance
);
CV_WRAP
DMatch
(
int
_queryIdx
,
int
_trainIdx
,
int
_imgIdx
,
float
_distance
);
CV_PROP_RW
int
queryIdx
;
// query descriptor index
CV_PROP_RW
int
queryIdx
;
//
!<
query descriptor index
CV_PROP_RW
int
trainIdx
;
// train descriptor index
CV_PROP_RW
int
trainIdx
;
//
!<
train descriptor index
CV_PROP_RW
int
imgIdx
;
// train image index
CV_PROP_RW
int
imgIdx
;
//
!<
train image index
CV_PROP_RW
float
distance
;
CV_PROP_RW
float
distance
;
...
@@ -868,8 +860,8 @@ public:
...
@@ -868,8 +860,8 @@ public:
TermCriteria
(
int
type
,
int
maxCount
,
double
epsilon
);
TermCriteria
(
int
type
,
int
maxCount
,
double
epsilon
);
int
type
;
//!< the type of termination criteria: COUNT, EPS or COUNT + EPS
int
type
;
//!< the type of termination criteria: COUNT, EPS or COUNT + EPS
int
maxCount
;
// the maximum number of iterations/elements
int
maxCount
;
//
!<
the maximum number of iterations/elements
double
epsilon
;
// the desired accuracy
double
epsilon
;
//
!<
the desired accuracy
};
};
...
...
modules/imgcodecs/include/opencv2/imgcodecs.hpp
浏览文件 @
f056e713
...
@@ -197,48 +197,7 @@ should have alpha set to 0, fully opaque pixels should have alpha set to 255/655
...
@@ -197,48 +197,7 @@ should have alpha set to 0, fully opaque pixels should have alpha set to 255/655
The sample below shows how to create such a BGRA image and store to PNG file. It also demonstrates how to set custom
The sample below shows how to create such a BGRA image and store to PNG file. It also demonstrates how to set custom
compression parameters :
compression parameters :
@code
@include snippets/imgcodecs_imwrite.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void createAlphaMat(Mat &mat)
{
CV_Assert(mat.channels() == 4);
for (int i = 0; i < mat.rows; ++i) {
for (int j = 0; j < mat.cols; ++j) {
Vec4b& bgra = mat.at<Vec4b>(i, j);
bgra[0] = UCHAR_MAX; // Blue
bgra[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); // Green
bgra[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); // Red
bgra[3] = saturate_cast<uchar>(0.5 * (bgra[1] + bgra[2])); // Alpha
}
}
}
int main(int argv, char **argc)
{
// Create mat with alpha channel
Mat mat(480, 640, CV_8UC4);
createAlphaMat(mat);
vector<int> compression_params;
compression_params.push_back(IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
try {
imwrite("alpha.png", mat, compression_params);
}
catch (cv::Exception& ex) {
fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
return 1;
}
fprintf(stdout, "Saved PNG file with alpha data.\n");
return 0;
}
@endcode
@param filename Name of the file.
@param filename Name of the file.
@param img Image to be saved.
@param img Image to be saved.
@param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags
@param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags
...
...
modules/imgproc/include/opencv2/imgproc.hpp
浏览文件 @
f056e713
此差异已折叠。
点击以展开。
samples/cpp/tutorial_code/ImgTrans/imageSegmentation.cpp
浏览文件 @
f056e713
...
@@ -73,15 +73,15 @@ int main()
...
@@ -73,15 +73,15 @@ int main()
//! [bin]
//! [bin]
// Create binary image from source image
// Create binary image from source image
Mat
bw
;
Mat
bw
;
cvtColor
(
src
,
bw
,
C
V
_BGR2GRAY
);
cvtColor
(
src
,
bw
,
C
OLOR
_BGR2GRAY
);
threshold
(
bw
,
bw
,
40
,
255
,
CV_THRESH_BINARY
|
CV_
THRESH_OTSU
);
threshold
(
bw
,
bw
,
40
,
255
,
THRESH_BINARY
|
THRESH_OTSU
);
imshow
(
"Binary Image"
,
bw
);
imshow
(
"Binary Image"
,
bw
);
//! [bin]
//! [bin]
//! [dist]
//! [dist]
// Perform the distance transform algorithm
// Perform the distance transform algorithm
Mat
dist
;
Mat
dist
;
distanceTransform
(
bw
,
dist
,
CV_
DIST_L2
,
3
);
distanceTransform
(
bw
,
dist
,
DIST_L2
,
3
);
// Normalize the distance image for range = {0.0, 1.0}
// Normalize the distance image for range = {0.0, 1.0}
// so we can visualize and threshold it
// so we can visualize and threshold it
...
@@ -92,7 +92,7 @@ int main()
...
@@ -92,7 +92,7 @@ int main()
//! [peaks]
//! [peaks]
// Threshold to obtain the peaks
// Threshold to obtain the peaks
// This will be the markers for the foreground objects
// This will be the markers for the foreground objects
threshold
(
dist
,
dist
,
.4
,
1.
,
CV_
THRESH_BINARY
);
threshold
(
dist
,
dist
,
.4
,
1.
,
THRESH_BINARY
);
// Dilate a bit the dist image
// Dilate a bit the dist image
Mat
kernel1
=
Mat
::
ones
(
3
,
3
,
CV_8UC1
);
Mat
kernel1
=
Mat
::
ones
(
3
,
3
,
CV_8UC1
);
...
@@ -108,7 +108,7 @@ int main()
...
@@ -108,7 +108,7 @@ int main()
// Find total markers
// Find total markers
vector
<
vector
<
Point
>
>
contours
;
vector
<
vector
<
Point
>
>
contours
;
findContours
(
dist_8u
,
contours
,
CV_RETR_EXTERNAL
,
CV_
CHAIN_APPROX_SIMPLE
);
findContours
(
dist_8u
,
contours
,
RETR_EXTERNAL
,
CHAIN_APPROX_SIMPLE
);
// Create the marker image for the watershed algorithm
// Create the marker image for the watershed algorithm
Mat
markers
=
Mat
::
zeros
(
dist
.
size
(),
CV_32SC1
);
Mat
markers
=
Mat
::
zeros
(
dist
.
size
(),
CV_32SC1
);
...
@@ -165,4 +165,4 @@ int main()
...
@@ -165,4 +165,4 @@ int main()
waitKey
(
0
);
waitKey
(
0
);
return
0
;
return
0
;
}
}
\ No newline at end of file
samples/cpp/tutorial_code/snippets/core_reduce.cpp
浏览文件 @
f056e713
...
@@ -23,8 +23,8 @@ int main()
...
@@ -23,8 +23,8 @@ int main()
Mat
m
=
(
Mat_
<
uchar
>
(
3
,
2
)
<<
1
,
2
,
3
,
4
,
5
,
6
);
Mat
m
=
(
Mat_
<
uchar
>
(
3
,
2
)
<<
1
,
2
,
3
,
4
,
5
,
6
);
Mat
col_sum
,
row_sum
;
Mat
col_sum
,
row_sum
;
reduce
(
m
,
col_sum
,
0
,
CV_
REDUCE_SUM
,
CV_32F
);
reduce
(
m
,
col_sum
,
0
,
REDUCE_SUM
,
CV_32F
);
reduce
(
m
,
row_sum
,
1
,
CV_
REDUCE_SUM
,
CV_32F
);
reduce
(
m
,
row_sum
,
1
,
REDUCE_SUM
,
CV_32F
);
/*
/*
m =
m =
[ 1, 2;
[ 1, 2;
...
@@ -40,22 +40,22 @@ int main()
...
@@ -40,22 +40,22 @@ int main()
//! [example]
//! [example]
Mat
col_average
,
row_average
,
col_min
,
col_max
,
row_min
,
row_max
;
Mat
col_average
,
row_average
,
col_min
,
col_max
,
row_min
,
row_max
;
reduce
(
m
,
col_average
,
0
,
CV_
REDUCE_AVG
,
CV_32F
);
reduce
(
m
,
col_average
,
0
,
REDUCE_AVG
,
CV_32F
);
cout
<<
"col_average =
\n
"
<<
col_average
<<
endl
;
cout
<<
"col_average =
\n
"
<<
col_average
<<
endl
;
reduce
(
m
,
row_average
,
1
,
CV_
REDUCE_AVG
,
CV_32F
);
reduce
(
m
,
row_average
,
1
,
REDUCE_AVG
,
CV_32F
);
cout
<<
"row_average =
\n
"
<<
row_average
<<
endl
;
cout
<<
"row_average =
\n
"
<<
row_average
<<
endl
;
reduce
(
m
,
col_min
,
0
,
CV_
REDUCE_MIN
,
CV_8U
);
reduce
(
m
,
col_min
,
0
,
REDUCE_MIN
,
CV_8U
);
cout
<<
"col_min =
\n
"
<<
col_min
<<
endl
;
cout
<<
"col_min =
\n
"
<<
col_min
<<
endl
;
reduce
(
m
,
row_min
,
1
,
CV_
REDUCE_MIN
,
CV_8U
);
reduce
(
m
,
row_min
,
1
,
REDUCE_MIN
,
CV_8U
);
cout
<<
"row_min =
\n
"
<<
row_min
<<
endl
;
cout
<<
"row_min =
\n
"
<<
row_min
<<
endl
;
reduce
(
m
,
col_max
,
0
,
CV_
REDUCE_MAX
,
CV_8U
);
reduce
(
m
,
col_max
,
0
,
REDUCE_MAX
,
CV_8U
);
cout
<<
"col_max =
\n
"
<<
col_max
<<
endl
;
cout
<<
"col_max =
\n
"
<<
col_max
<<
endl
;
reduce
(
m
,
row_max
,
1
,
CV_
REDUCE_MAX
,
CV_8U
);
reduce
(
m
,
row_max
,
1
,
REDUCE_MAX
,
CV_8U
);
cout
<<
"row_max =
\n
"
<<
row_max
<<
endl
;
cout
<<
"row_max =
\n
"
<<
row_max
<<
endl
;
/*
/*
...
@@ -86,7 +86,7 @@ int main()
...
@@ -86,7 +86,7 @@ int main()
char
d
[]
=
{
1
,
2
,
3
,
4
,
5
,
6
};
char
d
[]
=
{
1
,
2
,
3
,
4
,
5
,
6
};
Mat
m
(
3
,
1
,
CV_8UC2
,
d
);
Mat
m
(
3
,
1
,
CV_8UC2
,
d
);
Mat
col_sum_per_channel
;
Mat
col_sum_per_channel
;
reduce
(
m
,
col_sum_per_channel
,
0
,
CV_
REDUCE_SUM
,
CV_32F
);
reduce
(
m
,
col_sum_per_channel
,
0
,
REDUCE_SUM
,
CV_32F
);
/*
/*
col_sum_per_channel =
col_sum_per_channel =
[9, 12]
[9, 12]
...
...
samples/cpp/tutorial_code/snippets/core_various.cpp
0 → 100644
浏览文件 @
f056e713
#include <opencv2/opencv.hpp>
using
namespace
std
;
using
namespace
cv
;
int
main
()
{
//! [Algorithm]
Ptr
<
Feature2D
>
sbd
=
SimpleBlobDetector
::
create
();
FileStorage
fs_read
(
"SimpleBlobDetector_params.xml"
,
FileStorage
::
READ
);
if
(
fs_read
.
isOpened
())
// if we have file with parameters, read them
{
sbd
->
read
(
fs_read
.
root
());
fs_read
.
release
();
}
else
// else modify the parameters and store them; user can later edit the file to use different parameters
{
fs_read
.
release
();
FileStorage
fs_write
(
"SimpleBlobDetector_params.xml"
,
FileStorage
::
WRITE
);
sbd
->
write
(
fs_write
);
fs_write
.
release
();
}
Mat
result
,
image
=
imread
(
"../data/detect_blob.png"
,
IMREAD_COLOR
);
vector
<
KeyPoint
>
keypoints
;
sbd
->
detect
(
image
,
keypoints
,
Mat
());
drawKeypoints
(
image
,
keypoints
,
result
);
for
(
vector
<
KeyPoint
>::
iterator
k
=
keypoints
.
begin
();
k
!=
keypoints
.
end
();
++
k
)
circle
(
result
,
k
->
pt
,
(
int
)
k
->
size
,
Scalar
(
0
,
0
,
255
),
2
);
imshow
(
"result"
,
result
);
waitKey
(
0
);
//! [Algorithm]
//! [RotatedRect_demo]
Mat
test_image
(
200
,
200
,
CV_8UC3
,
Scalar
(
0
));
RotatedRect
rRect
=
RotatedRect
(
Point2f
(
100
,
100
),
Size2f
(
100
,
50
),
30
);
Point2f
vertices
[
4
];
rRect
.
points
(
vertices
);
for
(
int
i
=
0
;
i
<
4
;
i
++
)
line
(
test_image
,
vertices
[
i
],
vertices
[(
i
+
1
)
%
4
],
Scalar
(
0
,
255
,
0
),
2
);
Rect
brect
=
rRect
.
boundingRect
();
rectangle
(
test_image
,
brect
,
Scalar
(
255
,
0
,
0
),
2
);
imshow
(
"rectangles"
,
test_image
);
waitKey
(
0
);
//! [RotatedRect_demo]
return
0
;
}
samples/cpp/tutorial_code/snippets/imgcodecs_imwrite.cpp
0 → 100644
浏览文件 @
f056e713
#include <opencv2/opencv.hpp>
using
namespace
cv
;
using
namespace
std
;
static
void
createAlphaMat
(
Mat
&
mat
)
{
CV_Assert
(
mat
.
channels
()
==
4
);
for
(
int
i
=
0
;
i
<
mat
.
rows
;
++
i
)
{
for
(
int
j
=
0
;
j
<
mat
.
cols
;
++
j
)
{
Vec4b
&
bgra
=
mat
.
at
<
Vec4b
>
(
i
,
j
);
bgra
[
0
]
=
UCHAR_MAX
;
// Blue
bgra
[
1
]
=
saturate_cast
<
uchar
>
((
float
(
mat
.
cols
-
j
))
/
((
float
)
mat
.
cols
)
*
UCHAR_MAX
);
// Green
bgra
[
2
]
=
saturate_cast
<
uchar
>
((
float
(
mat
.
rows
-
i
))
/
((
float
)
mat
.
rows
)
*
UCHAR_MAX
);
// Red
bgra
[
3
]
=
saturate_cast
<
uchar
>
(
0.5
*
(
bgra
[
1
]
+
bgra
[
2
]));
// Alpha
}
}
}
int
main
()
{
// Create mat with alpha channel
Mat
mat
(
480
,
640
,
CV_8UC4
);
createAlphaMat
(
mat
);
vector
<
int
>
compression_params
;
compression_params
.
push_back
(
IMWRITE_PNG_COMPRESSION
);
compression_params
.
push_back
(
9
);
bool
result
=
false
;
try
{
result
=
imwrite
(
"alpha.png"
,
mat
,
compression_params
);
}
catch
(
const
cv
::
Exception
&
ex
)
{
fprintf
(
stderr
,
"Exception converting image to PNG format: %s
\n
"
,
ex
.
what
());
}
if
(
result
)
printf
(
"Saved PNG file with alpha data.
\n
"
);
else
printf
(
"ERROR: Can't save PNG file.
\n
"
);
return
result
?
0
:
1
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录