1. 程式人生 > >c++ opencv 圖片處理中畫素掩膜 實現

c++ opencv 圖片處理中畫素掩膜 實現

#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>


using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst;
src = imread("D:\\Source\\opencv\\YanmoJuZhen\\Image\\xiaofeifei.jpeg");//讀取圖片源
if (!src.data)
{
printf("could not locd image....\n");
return -1;
}//做一個判斷假如沒有讀取到就輸出錯誤提示
namedWindow("input image", CV_WINDOW_AUTOSIZE);//定義圖片自適應大小
imshow("input image", src);//輸出影象
/*
int cols = (src.cols-1)*src.channels();
int offsetx = src.channels();
int rows = src.rows;//行
dst = Mat::zeros(src.size(), src.type());//初始化影象
for (int row = 1; row< (rows - 1); row++)
{
const uchar* previous = src.ptr<uchar>(row - 1);
const uchar* current = src.ptr<uchar>(row);
const uchar* next = src.ptr<uchar>(row + 1);
uchar*output = dst.ptr<uchar>(row);
for (int col = offsetx; col < cols; col++)
{
output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx]
+ current[col + offsetx] + previous[col]
+ next[col]));
//saturate_cast定義是一個RGB色域值,這段公式主要是畫素掩膜的計算公式


}
//自己實現掩膜操作得計算後面的話我們可以自己呼叫openCV自帶的掩膜操作函式filter2D實現

//矩陣的掩膜操作十分簡單,根據掩膜來重新計算每個畫素的畫素值,掩膜(mask也被稱為Kernel)

//計算公式 -》 I(i,j)=5*(i,j)-[I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)]

}*/


Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);//定義掩膜矩陣
filter2D(src, dst, src.depth(), kernel);//呼叫filter2D函式 其中個src和dst是Mat的引數 然後depth()是點陣圖的深度
//有32 24 8
double t = getTickCount();
double timeconsume = (getTickCount() - t) / getTickFrequency();
printf("tim consume %.2f", timeconsume);
//這裡顯示的是實現時候的時間

namedWindow("contrast image demo", CV_WINDOW_AUTOSIZE);
imshow("contrast image demo", dst);


waitKey(0);
return 0;
}

相關推薦

c++ opencv 圖片處理 實現

#include<opencv2/opencv.hpp>#include<iostream>#include<math.h>using namespace cv;int main(int argc, char** argv){Mat src

Opencv影象處理之詳解mask

1.在OpenCV中我們經常會遇到一個名字:Mask(掩膜)。很多函式都使用到它,那麼這個Mask到底什麼呢?2.如果我們想要裁剪影象中任意形狀的區域時,應該怎麼辦呢? 答案是,使用掩膜(masking)。 我們先看一下掩膜的基礎。影象的位運算。影象基本運算影象的基本運算有很

【Python+OpenCV圖片區域性區域處理(改進版)-一種特徵提取方法

上一個版本看這裡:《Python+OpenCV實現【圖片】區域性區域畫素值處理》 上個版本的程式碼雖然實現了我需要的功能,但還是走了很多彎路,我意識到圖片本就是陣列形式,對於8位灰度圖,通道數為1,它

C#載入圖片與讀取圖片上的點方法

這個是我在別人網上摘的!如果發現我摘的是你的,就給我發郵件,我把它給刪了![email protected] (1)在.NET中建立一個窗體,加入pictureBox控制元件。設定其Image為空,SizeMode屬性設為AutoSize;(2)加入一個button

opencv訪問圖片的方法(二)——迭代器iterator

opencv訪問圖片畫素的第二種方法為:迭代法。在迭代法中,我們所需要的僅僅是獲得矩陣的begin和end,然後增加迭代直至 從begin到end。將*操作符新增在迭代指標前,即可訪問當前指向的內容。相比於指標直接訪問可能出現越界問題,迭代器絕對 是非常安全的方法。用關鍵字

opencv學習筆記1::訪問影象的三類方法(用指標,迭代器,動態地址)程式碼及用時檢測

本文參考《Opencv3 入門》 作者毛星雲//---------------------------------【標頭檔案、名稱空間包含部分】----------------------------//描述:包含程式所使用的標頭檔案和名稱空間//--------------

opencv學習筆記存取

我不想永遠是小明,我也想成為小紅。 椒鹽噪點:隨機的將部分畫素設定為白色或黑色。如果部分畫素丟失,那麼這種噪點就會出現。 cout是輸出,屬於iostream,格式:cout<< CV_[位數][帶符號與否][型別字首]C[通道數],如CV

《OpenCV3程式設計入門》——5.1.5 訪問影象的三類方法(指標訪問、迭代器iterator、動態地址計算配合at元素)

目錄 1、指標訪問畫素 2、迭代器操作畫素 3、動態地址計算 OpenCV中,有三種方式訪問影象畫素:  指標訪問:C操作符[]; 迭代器iterator 動態地址計算 上述方法在訪問速度上略有差異。debug模式下,

OpenCV:Mat訪問

1. at方式 單通道: mat.at<uchar>(row,col); 三通道:每一個畫素的位置都包含了三個uchar資料,三通道使用Vec3b; Vec3b v= mat.at<Vec3b>(row,col);//v[0]、v[1]、v[2] 【注

opencv圖片處理(三):得到圖片的灰度圖和直方圖

1.得到直方圖和灰度圖 # -*- coding: utf-8 -*- # !/usr/bin/env python # @Time : 2018/11/19 15:56 # @Author : xhh # @Desc : 得到灰度圖以及直方圖 # @File : openc

解決CSS圖片底部3問題總結

解決三畫素問題的總結: 1.img標籤的父標籤增加font-size:0; 如、body{    font-size: 0;  } 2.img標籤增加display:block; img{display:block;} 3.img標籤增加vertical-align: middle; img{vertical

[完] 取圖片上面的顏色

只是用了好用,拿來分享,參考網址 如有侵權,請聯絡我刪除,謝謝開源的童鞋。   不熟悉的點總結: m = (char *)malloc(sizeof(char)); malloc() 動態分配記憶體,用malloc分配記憶體的首地址,然後賦值給變數m - (UICo

C++ Opencv——影象處理(預處理+矩形物體分割)

 影象預處理分割目標 // ROI提取 Mat Image_ROI(Mat frame) { Mat gray, bw, img, bkup; /*目標提取——預處理——Mat ROI*/ /*預處理很重要——直接找到目標*/ //預處理很重要——直接找到目標 // 灰度化

C++ Opencv——影象處理(色道分離融合)

Mat HSV; cv::cvtColor(src, HSV, CV_BGR2HSV); imshow("get HSV", HSV); vector<Mat> H_S_V; split(HSV, H_S_V); imshow("H", H_S_V[0]); imshow("S", H_

C++ Opencv——影象處理——濾波

https://blog.csdn.net/zoucharming/article/details/70197863 在影象處理中,儘可能消除圖片中的噪聲,消除噪聲就需要用到濾波,在本次opencv學習中,學習了三個濾波方式。 (1)平均濾波,就是將一個區域內的畫素值求和取平均值,然後用這個

android單位dp、px、pt、sp轉換

android中畫素單位有dp、px、pt、sp,每一種都代表不同的尺寸,先說一下每一種尺寸單位的含義。 dp(dip): device independent pixels(裝置獨立畫素). 不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA

ASP.NET Core WebApi簡單轉換跟蹤實現

  畫素跟蹤雖然是最早用於跟蹤營銷轉換的方法,但它仍然被廣泛使用,像Facebook這樣的大公司仍然將其視為跟蹤網頁轉換的方法之一。 由於它的簡單性,通過畫素方法的跟蹤轉換仍然被廣泛使用。它不需要任何複雜的客戶端實現,因為它確保它將在幾乎所有可以載入影象的瀏覽器上執行。它由頁面上的一個簡單的

PS怎樣把低圖片變成高圖片

轉自:https://jingyan.baidu.com/article/642c9d34d2b5b2644a46f724.html 我們選擇“影象”》“影象大小”開啟影象大小設定框,然後我們選定“重置影象”,然後在插值裡選擇“兩次立方(適用於平滑漸變)”,這時再把畫

opencv修改影象的

本節知識點 1,讀寫影象 a,imread可以載入灰度圖或者RGB影象 b,imwrite儲存影象,型別由副檔名決定 2,讀寫影象的畫素 a,讀取灰度影象畫素點的值(CV_8UC1) Scalar i

android單位dp、px、pt、sp的說明及hdpi mdpi ldpi xhdpi的比例

dp(dip): device independent pixels(裝置獨立畫素). 不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴畫素。 px: p