opencv3實現影象修補-inpaint函式
#include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; bool g_bDrawing = false; Point g_CurrPoint, g_OrgPoint; int g_nThick = 5, g_nBlue = 255, g_nGreen = 255, g_nRed = 0; int g_nImageOneValue = 49; Mat srcImage; Mat grayImage; Mat maskImage; /*注意:不能在毀掉函式中寫入未初始化的矩陣類,所以需要用時,需要寫一個標誌位,然後再在while(1)迴圈內使用*/ void onMouse(int event, int x, int y, int flag, void *param) { Mat &img = *(cv::Mat*)param; switch (event) { //移動滑鼠的時候 case CV_EVENT_MOUSEMOVE: { g_OrgPoint = g_CurrPoint; g_CurrPoint = Point(x, y); if (g_bDrawing == 1) { line(srcImage, g_CurrPoint, g_OrgPoint, Scalar(g_nBlue, g_nGreen, g_nRed), g_nThick); imshow("【滑鼠事件視窗】", srcImage); //在掩膜圖上進行顯示 line(maskImage, g_CurrPoint, g_OrgPoint, Scalar(g_nBlue, g_nGreen, g_nRed), g_nThick); imshow("【掩膜影象】", maskImage); } } break; //點選滑鼠左鍵時 case CV_EVENT_LBUTTONDOWN: { g_bDrawing = true; g_OrgPoint = Point(x, y); g_CurrPoint = g_OrgPoint; } break; //鬆開滑鼠左鍵時 case CV_EVENT_LBUTTONUP: { g_bDrawing = false; } break; } } int main() { Mat tempImage; RNG &rng = theRNG(); srcImage = imread("lili.jpg"); //用一個變數來儲存原影象 Mat g_srcImage; srcImage.copyTo(g_srcImage); //為掩膜圖 分配空間 maskImage.create(srcImage.size(), CV_8UC1); maskImage = Scalar::all(0); namedWindow("【滑鼠事件視窗】"); setMouseCallback("【滑鼠事件視窗】", onMouse, 0); namedWindow("【滾動條視窗】", 0); createTrackbar("thick", "【滾動條視窗】", &g_nThick, 100, 0); createTrackbar("Blue", "【滾動條視窗】", &g_nBlue, 255, 0); createTrackbar("Green", "【滾動條視窗】", &g_nGreen, 255, 0); createTrackbar("Red", "【滾動條視窗】", &g_nRed, 255, 0); char key; while (1) { imshow("【滑鼠事件視窗】", srcImage); key = waitKey(); if (key == 27) break; //如果檢測到 鍵值是1 則恢復原圖 if (key == '1') { g_srcImage.copyTo(srcImage); maskImage = Scalar::all(0); imshow("【滑鼠事件視窗】", srcImage); } //如果檢測到空格 則開始執行影象修復 Mat dstImage; dstImage.create(srcImage.size(), srcImage.type()); if (key == ' ') { inpaint(srcImage, maskImage, dstImage, 3, INPAINT_TELEA); imshow("【修補後的影象】", dstImage); } } return 0; }
相關推薦
opencv3實現影象修補-inpaint函式
#include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; bool g_bDrawing = false; Point g_C
OpenCV3之——影象修補inpaint()函式
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; #define WINDOW_NAME1 "原始圖" #define
opencv3實現分水嶺演算法-watershed函式
#include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; bool g_bDrawing = false; Point g_C
0006-用OpenCV的仿射變換函式warpAffine實現影象的任意角度旋轉!
影象旋轉的含義這裡就不說了。 說下仿射變換的含義,仿射變換實際上是一種線性變換,通過這種變換,可以實現影象的平移、縮放、翻轉、旋轉、剪下等操作。 在OpenCV中可以通過函式getRotationMatrix2D和函式warpAffine的聯合使用,對影象進行任意角度的旋轉。使用方法如下:
0005-用OpenCV的resize函式實現影象的縮放
影象縮放是什麼意思這裡不用說了吧! 在OpenCV中用resize函式實現影象的縮放,下面介紹這個函式!resize函式原型如下: C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy
0030-用OpenCV的inpaint函式做影象的汙點修復
OpenCV提供了inpaint函式做影象的汙點修復,它是基於畫素鄰域計算進行的修復,原型如下: C++: void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int
opencv3實現簡單的數字影象識別(KNN)
正在用opencv3做一個數字影象識別的小專案,要用到KNN,但是不熟悉它的介面,因此,借鑑了大佬的部落格,基本照搬了程式碼,程式碼如下: 大佬的連結如下:http://www.cnblogs.com/denny402/p/5033898.html // knnrecognizenum
opencv3.0 影象濾波方式程式碼實現
#include #include<opencv/cv.h> #include<opencv2/opencv.hpp> using namespace std; int main() { string imName = “lena.jpg”; cv::Mat
OpenCV3計算機視覺Python語言實現(三):使用OpenCV3處理影象
3.1 不同色彩空間的轉換 3.2 傅立葉變換 3.2.1 高通濾波器 HPF 3.2.2 低通濾波器 LPF 3.3 建立模組 3.4 邊緣檢測 3.5 用定製核心做卷積 3.6 修改應用 3.7
opencv3逼近多邊形曲線-approxPolyDP函式在影象中的應用
#include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace cv; using namespace std; int main()
利用OpenCV的Grabcut()函式實現影象的前景與背景的分割-並對Grabcut()作詳細介紹
Graphcut是一種基於圖論的分割方法,在計算機視覺領域中應用於前景分割、醫學處理、紋理分割及立體視覺等方面,類似於PS中的摳圖功能。基本圖論的分割技術是影象分割領域中新的研究熱點,該方法基於能量優化演算法,將影象分割問題轉換為圖的最小割優化問題。 Grabcut是Gra
OpenCV3之——影象線性混合操作、陣列加權和addWeighted()函式
線性混合操作是一種典型的二元(兩個輸入)的畫素操作; 計算陣列加權和:addWeighted()函式//函式原型 void addWeighted(InputArray src1,double alpha,InputArray src2,double
二、OpenCV3.4.2 實現影象拼接與融合
參考大神的帖子: 最終完整程式碼如下: #include <iostream> #include <stdio.h> #include "opencv2/core.hpp" #include "opencv2/core/util
OpenCV學習筆記(1)——resize函式實現影象大小歸一化
在影象處理過程中,有時需要把影象調整到同樣大小,便於處理,這時需要用到影象resize() 原函式void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, in
多媒體技術 || 用中位切割演算法實現影象減色
實現環境:python 處理一張紅蘋果圖: 先描述一下中位切割演算法吧: 將圖片內的所有畫素加入到同一個區域 對於所有的區域做以下的事: 計算此區域內所有畫素的 RGB 三元素最大值與最小值的差。 選出相差最大的那個顏色(R 或 G 或 B)
如何協助 MySQL 實現 Oracle 高階分析函式
Oracle 支援一些獨特的語法和函式,在移植到 MySQL 上時或多或少給程式設計師造成了困擾,下面我們針對 Oracle 的一些特殊用法舉例並講解如何用集算器來完成同樣功能。這些方法當然也不限於針對 MySQL,對於所有其它資料庫也能支援。 1、 &
Python使用tensorflow實現影象識別(貓狗大戰)-01
Python使用tensorflow實現影象識別(貓狗大戰)-01 import_data.py import tensorflow as tf import numpy as np import os #引入tensorflow、numpy、os 三個第三方模組 img_widt
c語言實現linux下高危函式system (簡易V1.0版本)
system這個函式真的是要慎用,一不小心就會留下漏洞。 下面是用c語言簡易的實現了一下system函式 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<err
影象就是一個函式
原文連結: https://blog.csdn.net/saltriver/article/details/78847964 計算機視覺旨在從影象中提取有用的資訊,這已經被證實是一個極具挑戰性的任務。那麼影象是什麼?或者說我們把影象看作什麼? 有人說影象就是一張圖片,一個場景,一個矩形(
OpenCV實現影象上新增漢字
OpenCV已經更新至3.0了,但自帶函式putText依然不支援影象上新增漢字,所以下面實現了影象中新增漢字功能,話不多說,程式碼奉上。 void GetStringSize(HDC hDC, const char* str, int* w, int* h) { SIZE size;