OpenCv C 小案例實戰 切邊 二

2021-09-03 07:02:28 字數 2339 閱讀 8433

接上篇文章…

一般的,乙個掃瞄的檔案是不可能完完全全擺正了的。它多多少少會有些傾斜。

現在有如下:

它逆時針進行了旋轉,那麼想要把多餘的白邊去掉且擺正應該怎麼做呢?

步驟如下:

1、邊緣檢測

2、找出輪廓

3、找出最小外接矩形,獲得旋轉的角度

4、根據旋轉的角度進行仿射變換

5、按切邊的操作進行

**(沒有用到的已注釋):

#include#include#includeusing namespace cv;

using namespace std;

mat src, dst, gray_src;

int current_level = 50;

int max_level = 255;

void cut_image(int, void*);

void rotating_image(int, void*);

const char* output_title = "rectminarea";

int main(int argc, char**argv)

//namedwindow(output_title,cv_window_autosize);

//createtrackbar("value", output_title, ¤t_level, max_level, cut_image);

//cut_image(0,0); //影象切邊

rotating_image(0,0); // 將影象旋轉成正的

imshow("input image", src);

waitkey(0);

return 0;

}//將影象旋轉成正的

void rotating_image(int, void*)

} printf("minw:%f\n", minw);

printf("minh:%f\n", minh);

printf("angle:%f\n", angle);//值為負數,說明逆時針旋轉,值為正數,說明順時針旋轉

for (size_t t = 0; t < contours.size(); t++)}}

imshow("showimg", showimg);

mat dst;

point2f center(src.cols/2, src.rows/2);

mat rota = getrotationmatrix2d(center, angle, 1.0);

warpaffine(src, dst, rota, src.size(), inter_linear,0,scalar(255,255,255));

imshow("correct image",dst);

//影象切邊

}//影象切邊

void cut_image(int, void*)

box = minrect.boundingrect();

} if (box.width > 0 && box.height > 0)

} imshow(output_title, showimg);

imshow("contours image", contoursimg); }

/* //做旋轉的**

int main()

*/

執行結果:

由此可以知道,該旋轉的角度是-45度,也就是逆時針旋轉了45度。

那麼就可以進行仿射變換:

mat dst;

point2f center(src.cols/2, src.rows/2);

mat rota = getrotationmatrix2d(center, angle, 1.0);

warpaffine(src, dst, rota, src.size(), inter_linear,0,scalar(255,255,255));

imshow("correct image",dst);

OpenCv C 小案例實戰 切邊 一

假如說現在有這麼一張如下 現在我想要去掉這張圖外面的白色區域,只留下紅色線框以內的部分。最終效果如圖所示 放上 include include includeusing namespace cv using namespace std mat src,dst,gray src int current...

OpenCv C 小案例實戰 物件提取

現在比如說我有這麼一張圖 我想要從中提取出 圓 的部分,那該怎麼做呢?用霍夫圓變換?no,萬一它不是乙個標準的圓呢?所以,這裡採用輪廓發現的方法來查詢 圓 解決思路 1 二值化 2 形態學操作 開運算 閉運算 3 輪廓點查詢 4 座標查詢。首先將影象進行二值化,輪廓點查詢需要二值化影象。先使用閉操作...

實戰 python爬蟲經典小案例彙總

所有例項 github位址 開始最好模仿,不要自己寫,錯了找不到原因 應用 搶票,投票,報告分析,飲食地圖,輿情監控 儲存資料 的方法大概可以分為幾類 儲存文字 儲存二進位制檔案 包括 儲存到資料庫 1.首先是獲取目標頁面 2.解析獲取的網頁中的元素,唯一定位,取得自己想要的 借助各種庫工具,分析頁...