1. 程式人生 > >openCv--裁剪影象不規則區域

openCv--裁剪影象不規則區域

得到影象中感興趣的不規則的區域分為三步,分別如下:

1.在原圖上用cvLine畫出自己感興趣的區域,比如這個區域可以有幾個線段圍起來,就用cvLine將所有的線段連起來

cvLine( CvArr* img, CvPoint pt1, CvPoint pt2,   CvScalar color, int thickness CV_DEFAULT(1),  int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );

例子:

IplImage ipl_img;
cvLine(&ipl_img, cvPoint(2 * vertics(i, 0), 2 * vertics(i, 1)), cvPoint(2 * vertics(i + 1, 0), 2 * vertics(i + 1, 1)), CV_RGB(111, 12, 200), 2, 8, 1);


2.建立一張和原圖同樣大小的全黑影象,畫上跟第一步同樣的線,再把區域內全置為白色。

在純黑影象上劃線:

Mat image0 = imread("D:/imagewarping/imageset/10.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);	
IplImage *face = cvLoadImage("D:/imagewarping/imageset/10_.jpg");
Mat M_mask = image0.clone();
IplImage mask_img = M_mask;
cvZero(&mask_img);
cvLine(&mask_img, cvPoint(vertics(i, 0),vertics(i, 1)), cvPoint(vertics(i + 1, 0), vertics(i + 1, 1)), CV_RGB(255, 255, 255), 2, 8, 1);


把區域內建成白色,其中cvPoint是區域內的點即可,CV_RGB是白色即可:
cvFloodFill(
		&mask_img,
		cvPoint(75,75),
		CV_RGB(255, 255, 255),
		cvScalar(20, 30, 40, 0),
		cvScalar(20, 30, 40, 0),
		NULL,
		4,
		NULL
		);


3.前兩步的結果做與運算
cvAnd(&ipl_img,&mask_img,&ipl_img);
即可得到感興趣的不規則區域。

原圖如下:

處理後的圖片:



相關推薦

openCv--裁剪影象不規則區域

得到影象中感興趣的不規則的區域分為三步,分別如下: 1.在原圖上用cvLine畫出自己感興趣的區域,比如這個區域可以有幾個線段圍起來,就用cvLine將所有的線段連起來 cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvS

ENVI/ArcGIS中不規則區域裁剪後背景值的設定

       ENVI中使用ROI或者不規則SHP檔案對遙感影像進行裁剪,裁剪後背景值為0的區域黑色顯示,使瀏覽者在視覺上不太願意接受,於是忽略背景值。      ArcGIS中設定忽略背景值較為簡單,屬性勾選忽略即可。

使用Python-OpenCV消除影象中孤立的小區域

之前一直使用Skimage中的形態學處理來進行孤立小區域的去除,程式碼如下 img = morphology.remove_small_objects(img, size) img = morphology.remove_small_holes(img, size) 後面

使用Python和OpenCV檢測影象中的物體並將物體裁剪下來

介紹 碩士階段的畢設是關於昆蟲影象分類的,程式碼寫到一半,上週五導師又給我新的昆蟲圖片資料集了,新圖片中很多圖片很大,但是圖片中的昆蟲卻很小,所以我就想著先處理一下圖片,把圖片中的昆蟲裁剪下來,這樣除去大部分無關背景,應該可以提高識別率。 原圖片舉例(將紅色

裁剪影象中感興趣區域python

目的是接上篇生成的高斯分佈,3*delta範圍內包含99+%的資訊,那麼3*delta外的區域置零,只保留半徑為3*delta的區域。 import numpy as np import matplotlib.pyplot as plt #im

Python opencv對多個相同大小圖片裁剪出同一區域

arcgis同一個模板出的圖,對每個裁剪出同一片區域,使得裁剪後的大小仍是相同的。word 、powerpoint似乎不太好實現。用Python和opencv很容易實現。 import cv2 img=cv2.imread(u'lun/aaa.jpg') #裁剪區域為行數的

OpenCV影象上摳取指定區域平移、縮放的影象

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <iostream> #include <fstream> #include <

OpenCV設定感興趣區域ROI,對影象進行區域性處理

今天終於將霍夫檢測的原始碼用C++寫出來了,八天時間遇到最多的問題還是資料結構不熟悉,有些問題不知道怎麼問,不知道從何下手 寫出來的檢測直線基本符合要求,問題是如果在現實中檢測鐵軌的話,附近會有石子,

AS3 在不規則區域內拖動

矩形 算法 etc 規則 sre ref complex 影響 number 原理: 1、確保拖動對象在鼠標點上,如果不確定會出現瞬間移動的感覺 2、確保觸碰到非通行區域,跳回到沒觸碰的點 源碼: import flash.events.MouseEvent; imp

OpenCV繪製多邊形和區域填充

OpenCV繪製多邊形和區域填充 繪製多邊形和區域填充主要用到了2個函式:polylines()和fillPoly()函式。 程式碼如下: #include<opencv2/opencv.hpp> #include<vector> #include <i

OpenCV影象的淺拷貝與深拷貝 = copy clone區別

下面介紹三種OpenCV複製影象的方法: 方法1、過載運算子= 使用過載運算子“=”進行的拷貝是一種淺拷貝,雖然它們有不同的矩陣頭,但是二者共享相同的記憶體空間,二者內容相互關聯,任何一個變數變化的同時另一個變數也隨之改變。 /*OpenCV v1版本*/ IplImage im

OpenCV實現影象上新增漢字

OpenCV已經更新至3.0了,但自帶函式putText依然不支援影象上新增漢字,所以下面實現了影象中新增漢字功能,話不多說,程式碼奉上。 void GetStringSize(HDC hDC, const char* str, int* w, int* h) { SIZE size;

學習OpenCV彩色影象的通道的分離(split)與合成(merge)

#include "cv.h" #include "highgui.h" using namespace cv; int main() {  Mat src = imread("picture.bmp",-1);   namedWindow("picture",

OpenCV 計算影象的平均梯度

// OpenCV 計算影象的平均梯度 double calcAvG(const cv::Mat& img) {  if(img.channels()!=1)  {   std::cout<<"輸入必須是單通道影象!"<<s

opencv獲得影象某點畫素值等

http://docs.opencv.org/2.4/doc/user_guide/ug_mat.html cv::Mat 獲取資料的下標和值 float intensity1 = frame.at<uchar>(pFaceInfo.iEyeLY,&

opencv影象上根據頂點繪製直線

知道影象中的四個頂點,繪製四個頂點構成的四邊形。如果想繪製圖像上原有的點,新增drawContours()函式。         Mat imageContoursnew = Mat::zeros(edge.size(), CV_8UC

openCV學習筆記 ROI區域的操作

程式碼如下: #include<opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp> #include<iostream> using namespace cv; using namesp

opencv影象的各種變換

cvtColor,這個函式是用來進行顏色空間的轉換,隨著OpenCV版本的升級,對於顏色空間種類的支援也是越來越多。 OpenCV預設的圖片通道是BGR。 RGB <--> BGR:CV_BGR2BGRA、CV_RGB2BGRA、CV_BGRA2RGBA、CV_

深度學習CSV格式原始資料用於裁剪影象

初衷 專案需要,需要做樣本類別訓練,即將每類樣本分放在不同的資料夾,通過網路訓練後得到模型,檢測資料輸出為所屬類別; 先前深度學習輸出為類別和位置,需要遍歷全域性影象,比較耗時。 問題 分類別訓練時,需要蒐集大量樣本並進行裁剪,這是一個很費時間和感情的事情; 恰好在深度學習時,通

python3隨筆-opencv讀取影象資料

如何安裝opencv-python $pip3 install opencv-python 如何讀取影象資料 import numpy as np import cv2 as cv img = cv.imread('1.png') print(img) print(img.dtype) [[[200