我的Opencv學習手冊(一)

2021-08-15 07:15:40 字數 1720 閱讀 3986

好久沒碰過opencv了,如今又要重新撿起來,重頭來過,這次是根據一篇重慶大學博士學位**《基於計算機視覺的運動目標跟蹤演算法研究》–尹巨集鵬中的思路,打算一步步探索運動物體識別的過程。

如下是內容中提出的演算法流程圖:

capture.read(frame);
int delay =1000 / rate;
//當時間沒結束前按鍵按下時,返回值為-1,否則返回按鍵

int c = waitkey(delay);

if ((char)c == 27 || currentframe > frametostop)

影象讀取到這裡就介紹完了,一步步走的話不會出現大問題的。

邊緣檢測我選擇了第一次接觸到的prewitt運算元,運算元結構如下:

float prewitt_x[9] = ;

float prewitt_y[9] = ;

我設計了prewitt方法,引數src和dst作為mat型別物件,使用卷積核的函式為

filter2d(src, dst_x, 8, px, cvpoint(-1, -1));
對於dst的每個座標的點,其值為使用縱軸prewitt_y和使用橫軸prewitt_x後得到的對應的座標的值的歐幾里得距離。

這次程式設計過程中一共出現了兩個讓我不知所措的報錯:

在opencv的程式設計中,佔空間最大的莫過於mat型別的資料了,所以我毫不猶豫的呼叫了mat型別物件的release()方法(雖然這個方法在析構函式中會自動呼叫),但是並沒有什麼作用。

一段段語句的除錯最終來到了prewitt()方法的最後一步,我呼叫了minmaxloc()方法,第一次呼叫這個方法用於獲取影象中最大最小畫素值,後來檢視了網上有關這個函式的用法才知道了「陰謀」:

第二個問題

從圖二可以看到ptr以及指標,下意識的就想到了指標問題的報錯,這裡不妨將我的「原」**貼上來作為前師之鑑吧。

在給輸出影象dst賦值時,我使用的模板型別是int,而在mat型別物件中每個點的資料用uchar型別表示,想必又是資料型別的問題,這裡我改為uchar型別問題解決。

總結:c,c++這類程式語言使用指標用於記憶體空間的手動配置,在使程式設計**具體準確的同時,也提出了對資料型別的用法準確的要求,這點很重要。

opencv的中文手冊學習(三)

opencv的中文手冊學習 三 練習題 嘗試使用opencv中可用的繪圖功能建立opencv的徽標。實現的思路步驟 技術準備 主要用到的函式 cv.circle cv.puttext cv.ellipsec的函式學習 字型參見 文字支援 import numpy as np import cv2 a...

我的速查手冊

本文只是記錄一些自己 曾經或者現在 經常翻查的手冊 幫助文件 有些是解釋語法的 例如make,python 有些是介紹工具使用的 例如git 寫下來是為了自己方便查詢。希望對你也有幫助。一般遇到技術上的問題,通常的做法 除了請教他人之外 本人總結的肯定有遺漏,權且算作是我自己的分類吧,而且分類也是自...

MySQL 學習手冊(一)

show databases use databasename show tables create database databasename create table tablename name 型別 null not null alter table name1 rename to name...