Opencv 첫 작업
#include
#include
using namespace cv;
using namespace std;
Point pt1;
Point pt2;
int main()
{ Mat A(640, 480, CV_8UC3, Scalar(255, 255, 255)); // Mat
Mat B = A; //
Mat C = A.clone(); //
pt1.x =0.9*240 ;
pt1.y = 0.9*320;
pt2.x = 1.1*240;
pt2.y = 1.1*320;
rectangle(C,pt1, pt2, Scalar(255, 0, 0), -1, 8, 0);//
imshow("before_operation", A);
imshow("after_operation", C);
imwrite("A.jpg", A);
imwrite("B.jpg", C);
waitKey(0);
return 0;
}
중요한 것은 코드 부분에 대한 이해이다. 모두가 Mat가 지침과 관련이 있는 것 같다는 것을 깨달았다.사실 우리는 Mat A=imread("xxxxx")를 정의했다.이때 이 A를 두 부분으로 볼 수 있는데 하나는 그림을 저장한 부분의 큰 행렬이다.다른 하나는 그림의 크기를 기록하고 이 그림 행렬을 가리키는 헤더입니다.단순한MatB=A일 뿐이라면이 때, 당신은 단지 A의 헤더를 B에게 복사했을 뿐입니다. 이것은 인용에 해당합니다. A에 별명 B를 붙였고, 이미지를 저장할 새로운 메모리를 열지 않습니다.Mat C=A.clone()을 사용하면 이미지를 저장하는 메모리를 다시 열고 새로운 헤더를 만드는 것과 같다.그래서 Mat류의 표현은 약간 바늘과 같지만 바늘이 아니라 이미지를 저장하는 일부분이 있다. 단지 오픈cv는 큰 이미지의 복제가 속도와 메모리에 가져오는 부담을 방지하기 위해 인용 메커니즘을 채택했지만 완전히 복제하려면 괜찮다.별도로 시험해 볼 수 있다
Mat A=imread("xxxxxx");
Mat B=A;
Mat B=imread("yyyyyyyy");
어떻게 되는 거야?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
위챗 애플릿의 간단한 로그인 페이지 이동우선 APP에 tapbar를 설정합니다.js에서 관련 데이터 사용자의 정보를 설정합니다. login 페이지는 귀속 데이터가 필요합니다.사용자 이름 로그인 이벤트 바인딩하기; 사용자 정보를 표시하는 사용자 페이지use...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.