當前位置:網站首頁>opencv掩膜操作
opencv掩膜操作
2022-01-28 00:38:19 【散散汪】
超詳細opencv掩膜操作,看不懂算我輸:
另外附上一篇博文,此博文當時算是解决我老大問題了!
#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst,t;
src = imread("D:/PT/yun.jpg");
double scale = 0.5;
Size dsize = Size(src.cols * scale, src.rows * scale);
Mat src2 = Mat(dsize, CV_32S);
resize(src, src2, dsize);
CV_Assert(src2.depth() == CV_8U);// 僅接受uchar圖像,
//剛進入函數的時候,我們要確保輸入圖像是無符號字符類型的。為了做到這點,我們使用了 CV_Assert 函數。若該函數括號內的錶達式為false,則會拋出一個錯誤。
if (!src2.data)
{
printf("could not load image...\n");
return -1;
}
namedWindow("Example1", WINDOW_AUTOSIZE);
imshow("Example1", src2);
int offsetx = src2.channels();//RGB三通道
int cols = (src2.cols-1) * offsetx;//列(要忽略最後一列)
int rows = src2.rows;//行
dst = Mat::zeros(src2.size(), src2.type());//初始化
for (int row = 1; row < (rows - 1); row++) {
//肯定從第二行開始啊,最後一行不要
const uchar* previous = src2.ptr<uchar>(row - 1);
const uchar * current = src2.ptr<uchar>(row);
const uchar * next = src2.ptr<uchar>(row + 1);
uchar * output = dst.ptr<uchar>(row);
for (int col = offsetx; col < cols; col++)//0,1,2不要
{
output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));
}
}
namedWindow("Example2", WINDOW_AUTOSIZE);
imshow("Example2", dst);
//double t = getTickCount();
//Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);
//filter2D(src, dst, src.depth(), kernel);
//double timeconsume =(getTickCount - t)/getTickFrequency();
cout << "Build-in filter2D time passed in seconds: " << timeconsume << endl;
//printf("second", timeconsume);
//namedWindow("Example2", WINDOW_AUTOSIZE);
//imshow("Example2", dst);
waitKey(0);
return 0;
}
版權聲明
本文為[散散汪]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201280038189476.html
邊欄推薦
猜你喜歡
隨機推薦
- win7系統上將電腦變為熱點的辦法
- Jedis連接阿裏雲redis
- 線程的生命周期,真的沒那麼簡單
- 【行研資料】2021年中國AI中臺賦能城市空間管理白皮書——附下載
- emplace_back 和 push_back 的區別
- 藍橋杯第三講--二分【習題】
- 地址的地址?
- Qt給靜態屏保加上粒子特效
- 圖的著色問題
- cesium導入旋轉動畫
- QGC雜記
- 面試面到自閉,職場反思,原來是我沒有掌握其中精髓
- CISP——關於網絡安全法(分享筆記)
- 通過ReentrantLock源碼看AQS源碼實現
- Js基礎_作用域
- Endnote使用方法——檢查參考文獻
- 記錄在appA裏面打開appB進行登錄,再次點擊桌面圖標appB避免再次重新啟動程序的解决辦法
- 自建Kubernetes的LoadBalancer類型服務方案-MetalLB
- JS中的forEach()和map()方法介紹
- 【ISO15765_UDS&OBD診斷】-02-Network layer網絡層介紹
- 百度BML-飛槳服務器以及Jetson nano部署實戰案例(下)
- 適合10歲小孩投保的保險產品都有什麼啊?少兒險可以買哪些險種?
- 北京大學2022年對元宇宙的全球研究報告
- 網上期貨開戶安全麼?期貨開戶准備什麼資料?
- 查看多臺jps的脚本
- #全網寒假最火特輯# 【第一章】 C語言之牛客網刷題筆記 【點進來保證讓知識充實你一整個寒假】
- Material Design 3 全新的進階版本UI庫
- 雲演 CTF Web題型 lfi 文件包含
- 【leectode 2022.1.22】批量處理任務
- IC驗證中的force/release 學習整理(4)後門訪問機制成與敗(續)
- Leetcode 算法面試沖刺 實戰 五(數組與循環)(十二)
- 數學建模-模糊綜合評價法(評價模型)
- Vulnhub靶機recon: 1滲透
- DWR异常:org.xml.sax.SAXException
- ZZULIOJ 1173: 密碼解密(指針專題)
- 掃雷初階版
- DCGAN 源碼解析
- [渝粵教育] 東南大學 工程熱力學 參考 資料
- Go 自定義日期時間格式解析解决方案 - 解决 `parsing time xx as xx: cannot parse xx as xx` 錯誤
- Redis 是如何處理命令的(客戶端)