1. 程式人生 > >Opencv獲取影象上的畫素值(Ubuntu版)

Opencv獲取影象上的畫素值(Ubuntu版)

前言:當需要製作自己的訓練集的時候,標註圖片上的檢測目標,是一件比較耗時費力的事情。下面記錄的就是其中一種方法。

1.程式碼:

import argparse
import cv2

refPt=[]
cropping=False

def click_and_crop(event,x,y,flags,param):
    global refPt,cropping
    if event == cv2.EVENT_LBUTTONDOWN:
        refPt=[(x,y)]
        print(x,y)
        cropping=True
    elif event == cv2.EVENT_LBUTTONUP:
        refPt.append((x,y))
        print(x,y)
        cropping=False
        
        cv2.rectangle(image,refPt[0],refPt[1],(0,255,0),2)
        cv2.imshow("image",image)
        
# 構造引數解析器並解析引數
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())
 
# 載入影象,複製它,並設定滑鼠回撥函式
image = cv2.imread(args["image"])
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", click_and_crop)
 
# 保持迴圈,直到按下“q”鍵
while True:
	# 顯示影象並等待按鍵
	cv2.imshow("image", image)
	key = cv2.waitKey(0) & 0xFF
 
	# 如果按下“r”鍵,則重置裁剪區域
	if key == ord("r"):
		image = clone.copy()
 
	# 如果按下“c”鍵,則從迴圈中斷開
	elif key == ord("c"):
		break
 
# 如果有兩個參考點,則從影象裁剪感興趣的區域並顯示它
if len(refPt) == 2:
	roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]
	cv2.imshow("ROI", roi)
	cv2.waitKey(0)
 
# 關閉所有開啟的視窗
cv2.destroyAllWindows()  
2.在Ubuntu系統下開啟命令提示符,cd到你的圖片及程式碼路徑下:

3.輸入:python 0005.py --image 01.jpg

(其中,0005.py為python程式碼名稱,01.jpg為需要標定的圖片)

4.在開啟的image視窗中點選你需要標記的目標,最終結果如下:


相關推薦

Opencv獲取影象Ubuntu

前言:當需要製作自己的訓練集的時候,標註圖片上的檢測目標,是一件比較耗時費力的事情。下面記錄的就是其中一種方法。 1.程式碼: import argparse import cv2 refPt=[] cropping=False def click_and_crop(e

opencv修改影象

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

Opencv獲取並改變影象

#include <iostream> using namespace std; #include "cv.h" #include "highgui.h" #pragma  comment(lib,"cxcore.lib") #pragma  comment(l

OpenCV獲取與設定點的的幾個方法

Code 1 : int main() { //新建一個uchar型別的單通道矩陣(grayscale image 灰度圖) Mat m(400, 400, CV_8U, Sca

opencv學習筆記存取

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

opencv獲得影象某點畫

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

opencv影象矩形框

實現程式碼: #include "opencv2/opencv.hpp" using namespace cv; void main() {     Mat src = imread("bird.jpg");     Rect re

OpenCV影象線、矩形、橢圓、多邊形、填充的多邊形、圓、顯示文字

OpenCV在影象上隨機畫直線、橢圓、多邊形、圓、顯示文字 程式碼如下: /** * @file Drawing_2.cpp * @brief Simple sample code */ #include <opencv2/core.hpp> #inc

在 cocos2d-x 中獲取紋理的

本文基於cocos2d-x 2.2.3 專案需要一個功能,就是在點選某個不規則邊緣圖片的時候,不響應圖片的透明部分。 以前在 AS3 中處理類似需求的時候,就是獲取點選點的畫素值,得到 Alpha 的值,然後根據 Alpha 的值來判斷是否需要響應。 但在 cocos2d-

python封裝configparser模塊獲取conf.ini優化

att 模塊 沒有 自動化測試 .com for getconf dict import   昨天晚上封裝了configparser模塊,是根據keyname獲取的value。python封裝configparser模塊獲取conf.ini值   我原本是想通過confi

阿里雲cdh5 hbase搭建單機

一、簡介 HBase是一種構建在HDFS之上的分散式、面向列的儲存系統。在需要實時讀寫、隨機訪問超大規模資料集時,可以使用HBase。 儘管已經有許多資料儲存和訪問的策略和實現方法,但事實上大多數解決方案,特別是一些關係型別的,在構建時並沒有考慮超大規模和分散式的特點。許多商家通過複製和分割

opencv 簡單的實現霍夫變換改進

//霍夫變換 輸入單通道二值影象 檢測直線數量 void HoughLines(Mat &img,int n) { int i,j; //行列 int row = img.rows; int col = img.cols; //極徑最大值為 對角線+寬 int max_r

《數字影象處理原理與實踐MATLAB》一書之程式碼Part3

本文系《數字影象處理原理與實踐(MATLAB版)》一書之程式碼系列的Part3,輯錄該書第135至第184頁之程式碼,供有需要讀者下載研究使用。程式碼執行結果請參見原書配圖。-------------------------------------------P139orig

數字影象處理原理與實踐MATLAB勘誤表

本文系《數字影象處理原理與實踐(MATLAB版)》一書的勘誤表。【內容簡介】本書全面系統地介紹了數字影象處理技術的理論與方法,內容涉及幾何變換、灰度變換、影象增強、影象分割、影象去噪、小波變換、形態學處

《數字影象處理原理與實踐MATLAB》一書之程式碼Part1

本文系《數字影象處理原理與實踐(MATLAB版)》一書之程式碼系列的Part1(P1~42),程式碼執行結果請參見原書配圖。P20I = imread('lena.jpg');BW1 = im2bw(I

滑動視窗的最大java

【題目描述】給定一個數組和滑動視窗的大小,找出所有滑動窗口裡數值的最大值。例如,如果輸入陣列{2,3,4,2,6,2,5,1}及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為{4,4,6,6,6,5}; 針對陣列{2,3,4,2,6,2,5,1}

Activity之間進行傳的方式以及Activity的回傳補充

1、使用Intent進行Activity傳值 1)使用setClass方法來制定我們要跳轉的Activity Intent intent=new Intent(this,SecondActivity.class); intent.putExtra(key,value); s

基於opencv 識別、定位二維碼 c++

前言 因工作需要,需要定點陣圖片中的二維碼;我遂查閱了相關資料,也學習了opencv開源庫。通過一番努力,終於很好的實現了二維碼定位。本文將講解如何使用opencv定位二維碼。 定位二維碼不僅僅是為了識別二維碼;還可以通過二維碼對影象進行水平糾正以及相鄰區域定位。定位二維碼,不僅需要影象處理相關知識,還需要

opengl入門ubuntu

原帖地址: 我寫的東西大部分是我學習的體會或是工作中遇到問題,所以很多東西可能不是很“精準”,但我儘量做到好理解、好使用。 如果想比較系統學習opengl可以先從一本叫《opengl超級寶典》的書入手,而且我建議對於沒有任何opengl的基礎的人要看這本書的第四版。因為,opengl在

Hadoop 通過bind9配置DNS伺服器替代hosts的IP對映ubuntu

最開始搭建hadoop叢集時,我是用hosts的ip對映實現的各個主機名與IP之間的對映關係。 但是,hosts的ip對映的缺點是,當我們在叢集裡面增加一個機器時,所有機器都要更新他們的hosts檔案,這樣就顯得很繁瑣。 通過查詢資料,可以使用bind9配置DNS來替代原先