#Python Code
import cv2
import numpy as np
def PointOp():
pt1 = np.array([0, 0]) # pt1 = (0, 0)
pt1[0] = 5
pt1[1] = 10 # pt1 = (5, 10)
pt2 = np.array([10, 30]) # pt2 = (10, 30)
pt3 = pt1 + pt2 # pt3 = [15, 40]
pt4 = pt1 * 2 # pt4 = [10, 20]
d1 = np.dot(pt1, pt2) # d1 = 350
b1 = np.array_equal(pt1, pt2) # b1 = False
print("pt1:", pt1)
print("pt2:", pt2)
print("pt3:", pt3)
print("pt4:", pt4)
print("d1:", d1)
print("b1:", b1)
def SizeOp():
sz1 = np.array([0, 0]) # sz1 = [0, 0]
sz2 = np.array([10, 20]) # sz2 = [10, 20]
sz1[0] = 5
sz1[1] = 10 # sz1 = [5, 10]
sz3 = sz1 + sz2 # sz3 = [15, 30]
sz4 = sz1 * 2 # sz4 = [10, 20]
area1 = sz4[0] * sz4[1] # area1 = 200
print("sz3:", sz3)
print("sz4:", sz4)
print("area1:", area1)
def RectOp():
rc1 = np.zeros(4) # cv2.Rect(0, 0, 0, 0) # rc1 = [0 x 0 from (0, 0)]
rc2 = np.array([10, 10, 60, 40]) #cv2.Rect(10, 10, 60, 40) # rc2 = [60 x 40 from (10, 10)]
rc3 = np.array([rc1[0], rc1[1], 50, 40]) #cv2.Rect(rc1.x, rc1.y, 50, 40) # rc3 = [50 x 40 from (0, 0)]
rc4 = np.array([rc2[0] + 10, rc2[1] + 10, rc2[2], rc2[3]]) # cv2.Rect(rc2.x + 10, rc2.y + 10, rc2.width, rc2.height) # rc4 = [60 x 40 from (20, 20)]
rc5 = np.array([rc3[0], rc3[1], min(rc3[3], rc4[2]), min(rc3[3], rc4[2])]) #cv2.Rect(rc3.x, rc3.y, min(rc3.width, rc4.width), min(rc3.height, rc4.height)) # rc5 = [30 x 20 from (10, 10)]
rc6 = np.array([min(rc3[0], rc4[0]), min(rc3[1], rc4[1]), max(rc3[2], rc4[2]), max(rc3[3], rc4[3])])#cv2.Rect(min(rc3.x, rc4.x), min(rc3.y, rc4.y), max(rc3.width, rc4.width), max(rc3.height, rc4.height)) # rc6 = [80 x 60 from (0, 0)]
print("rc5:", rc5)
print("rc6:", rc6)
def RotatedRectOp():
rr1 = cv2.RotatedRect((40, 30), (40, 20), 30.0)
pts = cv2.boxPoints(rr1)
pts = np.int0(pts)
br = cv2.boundingRect(pts)
print("RotatedRect points:", pts)
print("BoundingRect:", br)
def RangeOp():
r1 = range(0, 10)
print("Range:", list(r1))
def StringOp():
str1 = "Hello"
str2 = "world"
str3 = str1 + " " + str2 # str3 = "Hello world"
ret = (str2 == "WORLD")
print("str3:", str3)
print("ret:", ret)
imgs = []
for i in range(3):
filename = "data{:02d}.bmp".format(i + 1)
print(filename)
img = cv2.imread(filename)
imgs.append(img)
if __name__ == '__main__':
PointOp()
SizeOp()
RectOp()
RotatedRectOp()
RangeOp()
StringOp()
// C++ Code
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void PointOp();
void SizeOp();
void RectOp();
void RotatedRectOp();
void RangeOp();
void StringOp();
int main()
{
PointOp();
SizeOp();
RectOp();
RotatedRectOp();
RangeOp();
StringOp();
return 0;
}
void PointOp()
{
Point pt1; // pt1 = (0, 0)
pt1.x = 5; pt1.y = 10; // pt1 = (5, 10)
Point pt2(10, 30); // pt2 = (10, 30)
Point pt3 = pt1 + pt2; // pt3 = [15, 40]
Point pt4 = pt1 * 2; // pt4 = [10, 20]
int d1 = pt1.dot(pt2); // d1 = 350
bool b1 = (pt1 == pt2); // b1 = false
cout << "pt1: " << pt1 << endl;
cout << "pt2: " << pt2 << endl;
}
void SizeOp()
{
Size sz1, sz2(10, 20); // sz1 = [0 x 0], sz2 = [10 x 20]
sz1.width = 5; sz1.height = 10; // sz1 = [5 x 10]
Size sz3 = sz1 + sz2; // sz3 = [15 x 30]
Size sz4 = sz1 * 2; // sz4 = [10 x 20]
int area1 = sz4.area(); // area1 = 200
cout << "sz3: " << sz3 << endl;
cout << "sz4: " << sz4 << endl;
}
void RectOp()
{
Rect rc1; // rc1 = [0 x 0 from (0, 0)]
Rect rc2(10, 10, 60, 40); // rc2 = [60 x 40 from (10, 10)]
Rect rc3 = rc1 + Size(50, 40); // rc3 = [50 x 40 from (0, 0)]
Rect rc4 = rc2 + Point(10, 10); // rc4 = [60 x 40 from (20, 20)]
Rect rc5 = rc3 & rc4; // rc5 = [30 x 20 from (10, 10)]
Rect rc6 = rc3 | rc4; // rc6 = [80 x 60 from (0, 0)]
cout << "rc5: " << rc5 << endl;
cout << "rc6: " << rc6 << endl;
}
void RotatedRectOp()
{
RotatedRect rr1(Point2f(40, 30), Size2f(40, 20), 30.f);
Point2f pts[4];
rr1.points(pts);
Rect br = rr1.boundingRect();
}
void RangeOp()
{
Range r1(0, 10);
}
void StringOp()
{
String str1 = "Hello";
String str2 = "world";
String str3 = str1 + " " + str2; // str3 = "Hello world"
bool ret = (str2 == "WORLD");
Mat imgs[3];
for (int i = 0; i < 3; i++) {
String filename = format("data%02d.bmp", i + 1);
cout << filename << endl;
imgs[i] = imread(filename);
}
}
C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저
pt1: [ 5 10]
pt2: [10 30]
pt3: [15 40]
pt4: [10 20]
d1: 350
b1: False
sz3: [15 30]
sz4: [10 20]
area1: 200
rc5: [ 0. 0. 40. 40.]
rc6: [ 0. 0. 60. 40.]
RotatedRect points: [[17 28]
[27 11]
[62 31]
[52 48]]
BoundingRect: (17, 11, 46, 38)
Range: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
str3: Hello world
ret: False
data01.bmp
data02.bmp
data03.bmp
'OpenCV' 카테고리의 다른 글
ch04 drawing (0) | 2024.05.19 |
---|---|
ch03 ScalarOp (0) | 2024.05.19 |
ch03 MatOp (0) | 2024.05.19 |
ch03 InputArrayOp (0) | 2024.05.19 |
ch02 Hello OpenCV (0) | 2024.05.19 |