OpenCV-Python ist eine einfach zu entwickelnde Umgebung für die Entwicklung von Algorithmen, die OpenCV verwenden. Hier ist ein Hinweis, der Ihnen einen Hinweis gibt, wenn Sie den dort entwickelten Algorithmus nach C ++ portieren.
Für OpenCV-Python: Verwendung des Typs numpy.array → Ersatz durch cv :: Mat Typ numpy.array typspezifische Methode Ersatz durch die Methode vom Typ cv :: Mat.
Diese Art des Umschreibens ist einfach. Auch wenn Sie nicht über genügend Erfahrung verfügen, um Bildverarbeitungsalgorithmen zu erstellen, können Sie OpenCV-Python-Code in OpenCV C ++ umschreiben, wenn Sie Erfahrung mit C ++ haben.
numpy.array | cv::Mat | wichtiger Punkt |
---|---|---|
a = np.ones((h,w), dtype=np.uint8) | cv::Mat a=cv::Mat::ones(cv::Size(w, h), cv::CV_8U); | |
shape | size | Form ist[h, w, channel]Bestellung oder[h, w] |
img.shape | cv::Size(img.rows, img.cols) | |
img = cv2.imread("lena.png "); imgRGB=img[:, :, ::-1] | cv::Mat img = cv::imread("lena.png "); | cv2.imread()Ist in der Reihenfolge der BGR |
import pylab as plt; plt.imshow(imgRGB) | cv::imshow("title", img); | matplotlib imshow()Ist Matlabs Imshow()Nahe bei |
a[:, :] = 0 | a.setTo(0); | Für Farbbilder a[:, :, :] = 0 。setTo()Argument ist eine Konstante |
a[b>127] = 255 | a.setTo(255, b > 127); | |
a = b+0 | b.copyTo(a); | In numpy nur ein=Wenn b, dann ist a ein Alias für b und die Substanz ist dieselbe. |
a[c==d] = b[c==d] | b.copyTo(a, c==d); | |
a = np.array(b, dtype=np.float32)/255.0 | b.convertTo(a, CV_32F, 1.0/255); |
OpenCV-Python-Codebeispiel
python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread("lena.png ", 0)
b = np.zeros(img.shape[:2], dtype=np.uint8)
b[img > 128] = 255
cv2.imwrite("junk.png ", b)
Beispiel für einen neu geschriebenen C ++ - Quellcode
python
#include <opencv2/opencv.hpp>
int main(int argc, char* argv[]) {
cv::Mat img= cv::imread("lena.png ", 0);
cv::Mat b = cv::Mat::zeros(cv::Size(img.rows, img.cols), CV_8U);
b.setTo(255, img>127);
cv::imwrite("junk_cpp.png ", b);
}
Ausführungsergebnisbild
Nützliche Funktionen in numpy numpy.rot90(m, k=1, axes=(0, 1) (https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.rot90.html)
Recommended Posts