OpenCV 는 그림 에 테두리 기능 을 추가 합 니 다.

목표:
OpenCV 기반 함수 cv::copy MakeBorder 그림 에 테두리 추가
함수 프로필:
copyMakeBorder ( src, dst, top, bottom, left, right, borderType, value );
인자:
src:원본 이미지
dst:대상 그림
top,bottom,left,right:모든 경계 방향 에서 픽 셀 의 너비 입 니 다.그림 의 원본 크기 의 5%를 사용 합 니 다.
borderType:테두리 의 종류 입 니 다.현재 예 에서 순수 색 이나 경계 복사.
value:borderType 설정 위치 BORDERCONSTANT,이것 은 테두리 의 색 으로 사 용 됩 니 다.
테두리 의 종류
1)단색 테두리
    BORDER_CONSTANT,테두리 설정 위치 단일 색상,예 를 들 어 검은색
2)그림 경계 확장
BORDER_REPLICATE,원본 그림 의 경 계 를 복사 하여 확장
코드

/**
 * @file copyMakeBorder_demo.cpp
 * @brief Sample code that shows the functionality of copyMakeBorder
 * @author OpenCV team
 */
 
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
 
using namespace cv;
 
//![variables]
Mat src, dst;
int top, bottom, left, right;
int borderType;
const char* window_name = "copyMakeBorder Demo";
RNG rng(12345);
//![variables]
 
/**
 * @function main
 */
int main( int, char** argv )
{
 
 int c;
 
 //![load]
 src = imread( argv[1], IMREAD_COLOR ); // Load an image
 
 if( src.empty() )
 {
  printf(" No data entered, please enter the path to an image file 
"); return -1; } //![load] /// Brief how-to for this program printf( "
\t copyMakeBorder Demo:
" ); printf( "\t --------------------
" ); printf( " ** Press 'c' to set the border to a random constant value
"); printf( " ** Press 'r' to set the border to be replicated
"); printf( " ** Press 'ESC' to exit the program
"); //![create_window] namedWindow( window_name, WINDOW_AUTOSIZE ); //![create_window] //![init_arguments] /// Initialize arguments for the filter top = (int) (0.05*src.rows); bottom = (int) (0.05*src.rows); left = (int) (0.05*src.cols); right = (int) (0.05*src.cols); //![init_arguments] dst = src; imshow( window_name, dst ); for(;;) { //![check_keypress] c = waitKey(500); if( (char)c == 27 ) { break; } else if( (char)c == 'c' ) { borderType = BORDER_CONSTANT; } else if( (char)c == 'r' ) { borderType = BORDER_REPLICATE; } //![check_keypress] //![update_value] Scalar value( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) ); //![update_value] //![copymakeborder] copyMakeBorder( src, dst, top, bottom, left, right, borderType, value ); //![copymakeborder] //![display] imshow( window_name, dst ); //![display] } return 0; }
효과.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기