緒:
圖像處置中,改變圖像巨細的操作是經常碰到的;
OpenCV庫resize函數專門用來改變圖像巨細的操作函數;
而C++中,vector::resize改變容器巨細;
本文本家兒要介紹這兩者resize用法;
格局:
void resize(InputArray src, //輸入
OutputArray dst, //輸出
Size dsize, //指心猿意馬圖像巨細
double fx=0,
double fy=0,
int interpolation=INTER_LINEAR )
參數:
dsize:指心猿意馬圖像尺寸巨細,
若是為0,則
【注】:
dsize和fx、fy不克不及同時為0。
fx、fy是沿x軸和y軸的縮放系數;
當默認取0時,計較公式如下:
interpolation:插值體例,
有以下幾種:
INTER_NEAREST - 比來鄰插值
INTER_LINEAR - 線性插值(默認)
INTER_AREA - 區域插值
INTER_CUBIC - 三次樣條插值
INTER_LANCZOS4 - Lanczos插值
應用實例
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\features2d\features2d.hpp>
#include <opencv2\core\core.hpp>
using namespace std;
using namespace cv;
int main()
{
string path = "3.jpg";
int resize_height = 618;
int resize_width = 460;
Mat src = imread(path);
Mat dst;
imshow("src", src);
resize(src, dst, Size(resize_width, resize_height), (0, 0), (0, 0), INTER_LINEAR);
imshow("dst", dst);
waitKey(0);
return 0;
}
vector:resize()改變容器內元素的數量,調整內存分派;
格局:
void resize (size_type n, value_type val = value_type());
當n比當前容器內元素數量小時,銷毀容器中多余的元素;
當n比當前容器內元素數量年夜時,擴展容器巨細,并用val初始化;
resize:設置內存巨細;
【注】:若是n年夜于當前的vector的容量(是容量,并非vector的size),將會引起主動內存分派,所以現有的pointer,references,iterators將會掉效。
應用:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> wgw;
cout << "initilize size is: " << wgw.size() << endl;
cout << "initilize capacity is :" << wgw.capacity() <<endl;
wgw.reserve(100);
cout << "wgw size is: " << wgw.size() << endl;
cout << "wgw capacity is :" << wgw.capacity() <<endl;
vector <int>wgw1;
wgw1.resize(200);
cout << "wgw1 size is :" << wgw1.size()<<endl;
cout << "wgw1 capacity is:" << wgw1.capacity() <<endl;
getchar();
return 0;
}
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!