python + c++两个版本:
OpenCV-day-001. [图像读取与显示]

import cv2 as cvsrc = cv.imread("E:/pictures/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
cv.waitKey(0)
cv.destroyAllWindows()

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int artc, char** argv) {Mat src = imread("E:/pictures/images/test.png", IMREAD_GRAYSCALE);if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);waitKey(0);return 0;
}


OpenCV-day-002. [图像色彩空间转换]

import cv2 as cvsrc = cv.imread("E:/pictures/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
cv.waitKey(0)
cv.destroyAllWindows()


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int artc, char** argv) {Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);Mat gray;cvtColor(src, gray, COLOR_BGR2GRAY);imwrite("D:/gray.png", gray);imshow("gray", gray);waitKey(0);return 0;
}

结果相同

OpenCV-day-003. [图像对象的创建与赋值]

import cv2 as cv
import numpy as npsrc = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)# 克隆图像
m1 = np.copy(src)# 赋值
m2 = src
src[100:200,200:300,:] = 255
cv.imshow("m2",m2)m3 = np.zeros(src.shape, src.dtype)
cv.imshow("m3", m3)m4 = np.zeros([512,512], np.uint8)
# m4[:,:] =127 try to give gray value 127
cv.imshow("m4", m4)m5 = np.ones(shape=[512,512,3], dtype=np.uint8)
m5[:,:,0] = 255
cv.imshow("m5", m5)cv.waitKey(0)
cv.destroyAllWindows()


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int artc, char** argv) {Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", CV_WINDOW_AUTOSIZE);imshow("input", src);// 创建方法 - 克隆Mat m1 = src.clone();imshow("m1", m1);// 复制Mat m2;src.copyTo(m2);imshow("m2", m2);// 赋值法Mat m3 = src;imshow("m3", m3);// 创建空白图像Mat m4 = Mat::zeros(src.size(), src.type());imshow("m4", m4);Mat m5 = Mat::zeros(Size(512, 512), CV_8UC3);imshow("m5", m5);Mat m6 = Mat::ones(Size(512, 512), CV_8UC3);imshow("m6", m6);Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);waitKey(0);return 0;
}



OpenCV-day-004. [图像像素的读写操作]

import cv2 as cvsrc = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
h, w, ch = src.shape
print("h , w, ch", h, w, ch)
for row in range(h):for col in range(w):b, g, r = src[row, col]b = 255 - bg = 255 - gr = 255 - rsrc[row, col] = [b, g, r]
cv.imshow("output", src)cv.waitKey(0)
cv.destroyAllWindows()

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int artc, char** argv) {Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", CV_WINDOW_AUTOSIZE);imshow("input", src);// 直接读取图像像素int height = src.rows;int width = src.cols;int ch = src.channels();for (int c = 0; c < ch; c++) {for (int row = 0; row < height; row++) {for (int col = 0; col < width; col++) {if (ch == 3) {Vec3b bgr = src.at<Vec3b>(row, col);bgr[0] = 255 - bgr[0];bgr[1] = 255 - bgr[1];bgr[2] = 255 - bgr[2];src.at<Vec3b>(row, col) = bgr;}else if (ch == 1) {int gray = src.at<uchar>(row, col);src.at<uchar>(row, col) = 255 - gray;}}}}imshow("output", src);// 指针读取Mat result = Mat::zeros(src.size(), src.type());int blue = 0, green = 0, red = 0;int gray;for (int c = 0; c < ch; c++) {for (int row = 0; row < height; row++) {uchar* curr_row = src.ptr<uchar>(row);uchar* result_row = result.ptr<uchar>(row);for (int col = 0; col < width; col++) {if (ch == 3) {blue = *curr_row++;green = *curr_row++;red = *curr_row++;*result_row++ = blue;*result_row++ = green;*result_row++ = red;}else if (ch == 1) {gray = *curr_row++;*result_row++ = gray;}}}}imshow("result", result);waitKey(0);return 0;
}


OpenCV-day-005. [图像像素的算术操作]

import cv2 as cv
import numpy as npsrc1 = cv.imread("D:/vcprojects/images/LinuxLogo.jpg");
src2 = cv.imread("D:/vcprojects/images/WindowsLogo.jpg");
cv.imshow("input1", src1)
cv.imshow("input2", src2)
h, w, ch = src1.shape
print("h , w, ch", h, w, ch)add_result = np.zeros(src1.shape, src1.dtype);
cv.add(src1, src2, add_result);
cv.imshow("add_result", add_result);sub_result = np.zeros(src1.shape, src1.dtype);
cv.subtract(src1, src2, sub_result);
cv.imshow("sub_result", sub_result);mul_result = np.zeros(src1.shape, src1.dtype);
cv.multiply(src1, src2, mul_result);
cv.imshow("mul_result", mul_result);div_result = np.zeros(src1.shape, src1.dtype);
cv.divide(src1, src2, div_result);
cv.imshow("div_result", div_result);cv.waitKey(0)
cv.destroyAllWindows()

 #include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int artc, char** argv) {Mat src1 = imread("D:/vcprojects/images/LinuxLogo.jpg");Mat src2 = imread("D:/vcprojects/images/WindowsLogo.jpg");if (src1.empty() || src2.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", CV_WINDOW_AUTOSIZE);imshow("input1", src1);imshow("input2", src2);int height = src1.rows;int width = src1.cols;int b1 = 0, g1 = 0, r1 = 0;int b2 = 0, g2 = 0, r2 = 0;int b = 0, g = 0, r = 0;Mat result = Mat::zeros(src1.size(), src1.type());for (int row = 0; row < height; row++) {for (int col = 0; col < width; col++) {b1 = src1.at<Vec3b>(row, col)[0];g1 = src1.at<Vec3b>(row, col)[1];r1 = src1.at<Vec3b>(row, col)[2];b2 = src2.at<Vec3b>(row, col)[0];g2 = src2.at<Vec3b>(row, col)[1];r2 = src2.at<Vec3b>(row, col)[2];result.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b1 + b2);result.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(g1 + g2);result.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(r1 + r2);}}imshow("output", result);Mat add_result = Mat::zeros(src1.size(), src1.type());add(src1, src2, add_result);imshow("add_result", add_result);Mat sub_result = Mat::zeros(src1.size(), src1.type());subtract(src1, src2, sub_result);imshow("sub_result", sub_result);Mat mul_result = Mat::zeros(src1.size(), src1.type());multiply(src1, src2, mul_result);imshow("mul_result", mul_result);Mat div_result = Mat::zeros(src1.size(), src1.type());divide(src1, src2, div_result);imshow("div_result", div_result);waitKey(0);return 0;
}

OpenCV-day-006. [LUT的作用与用法]

import cv2 as cvsrc = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
dst = cv.applyColorMap(src, cv.COLORMAP_COOL)
cv.imshow("output", dst)# 伪色彩
image = cv.imread("D:/vcprojects/images/canjian.jpg")
color_image = cv.applyColorMap(image, cv.COLORMAP_JET)
cv.imshow("image", image)
cv.imshow("color_image", color_image)
cv.waitKey(0)
cv.destroyAllWindows()


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;
void customColorMap(Mat &image);
int main(int argc, const char *argv[])
{Mat src = imread("D:/vcprojects/images/cos.jpg");if (src.empty()){printf("could not load image...\n");return -1;}Mat gray, dst;// 使用LUTapplyColorMap(src, dst, COLORMAP_SUMMER);// 显示结果imshow("colorMap", dst);cvtColor(src, gray, COLOR_BGR2GRAY);imshow("gray", gray);customColorMap(gray);waitKey(0);return 0;
}void customColorMap(Mat &image) {int lut[256];for (int i = 0; i < 256; i++) {if (i < 127)lut[i] = 0;elselut[i] = 255;}int h = image.rows;int w = image.cols;for (int row = 0; row < h; row++) {for (int col = 0; col < w; col++) {int pv = image.at<uchar>(row, col);image.at<uchar>(row, col) = lut[pv];}}imshow("lut demo", image);
}

OpenCV-day-007. [图像像素的逻辑操作]MJ )

import cv2 as cv
import numpy as np# create image one
src1 = np.zeros(shape=[400, 400, 3], dtype=np.uint8)
src1[100:200, 100:200, 1] = 255
src1[100:200, 100:200, 2] = 255
cv.imshow("input1", src1)
# create image two
src2 = np.zeros(shape=[400, 400, 3], dtype=np.uint8)
src2[150:250, 150:250, 2] = 255
cv.imshow("input2", src2)dst1 = cv.bitwise_and(src1, src2)
dst2 = cv.bitwise_xor(src1, src2)
dst3 = cv.bitwise_or(src1, src2)cv.imshow("dst1", dst1)
cv.imshow("dst2", dst2)
cv.imshow("dst3", dst3)src = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
dst = cv.bitwise_not(src)
cv.imshow("dst", dst)cv.waitKey(0)
cv.destroyAllWindows()


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, const char *argv[])
{// create image oneMat src1 = Mat::zeros(Size(400, 400), CV_8UC3);Rect rect(100, 100, 100, 100);src1(rect) = Scalar(0, 0, 255);imshow("input1", src1);printf("create first image...\n");// create image twoMat src2 = Mat::zeros(Size(400, 400), CV_8UC3);rect.x = 150;rect.y = 150;src2(rect) = Scalar(0, 0, 255);imshow("input2", src2);printf("create second image...\n");// 逻辑操作Mat dst1, dst2, dst3;bitwise_and(src1, src2, dst1);bitwise_xor(src1, src2, dst2);bitwise_or(src1, src2, dst3);// show resultsimshow("dst1", dst1);imshow("dst2", dst2);imshow("dst3", dst3);Mat src = imread("D:/vcprojects/images/test.png");namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);// 取反操作Mat dst;bitwise_not(src, dst);imshow("dst", dst);waitKey(0);return 0;
}


OpenCV-day-008. [通道分离与合并]

import cv2 as cvsrc = cv.imread("D:/vcprojects/images/flower.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)# 蓝色通道为零
mv = cv.split(src)
mv[0][:, :] = 0
dst1 = cv.merge(mv)
cv.imshow("output1", dst1)# 绿色通道为零
mv = cv.split(src)
mv[1][:, :] = 0
dst2 = cv.merge(mv)
cv.imshow("output2", dst2)# 红色通道为零
mv = cv.split(src)
mv[2][:, :] = 0
dst3 = cv.merge(mv)
cv.imshow("output3", dst3)cv.mixChannels(src, dst3, [2, 0])
cv.imshow("output4", dst3)cv.waitKey(0)
cv.destroyAllWindows()

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, const char *argv[])
{Mat src = imread("D:/vcprojects/images/flower.png");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);vector<Mat> mv;Mat dst1, dst2, dst3;// 蓝色通道为零split(src, mv);mv[0] = Scalar(0);merge(mv, dst1);imshow("output1", dst1);// 绿色通道为零split(src, mv);mv[1] = Scalar(0);merge(mv, dst2);imshow("output2", dst2);// 红色通道为零split(src, mv);mv[2] = Scalar(0);merge(mv, dst3);imshow("output3", dst3);waitKey(0);return 0;
}

OpenCV-day-009. [图像色彩空间转换]

import cv2 as cvsrc = cv.imread("D:/vcprojects/images/lian.jpg")
cv.namedWindow("rgb", cv.WINDOW_AUTOSIZE)
cv.imshow("rgb", src)# RGB to HSV
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)# RGB to YUV
yuv = cv.cvtColor(src, cv.COLOR_BGR2YUV)
cv.imshow("yuv", yuv)# RGB to YUV
ycrcb = cv.cvtColor(src, cv.COLOR_BGR2YCrCb)
cv.imshow("ycrcb", ycrcb)src2 = cv.imread("D:/vcprojects/images/flower.png");
cv.imshow("src2", src2)
hsv = cv.cvtColor(src2, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))
cv.imshow("mask", mask)cv.waitKey(0)
cv.destroyAllWindows()


#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, const char *argv[])
{Mat src = imread("D:/vcprojects/images/cat.jpg");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);// RGB to HSVMat hsv;cvtColor(src, hsv, COLOR_BGR2HSV);imshow("hsv", hsv);// RGB to YUVMat yuv;cvtColor(src, yuv, COLOR_BGR2YUV);imshow("yuv", yuv);// RGB to YUVMat ycrcb;cvtColor(src, ycrcb, COLOR_BGR2YCrCb);imshow("ycrcb", ycrcb);Mat src2 = imread("D:/vcprojects/images/flower.png");imshow("src2", src2);cvtColor(src2, hsv, COLOR_BGR2HSV);Mat mask;inRange(hsv, Scalar(35, 43, 46), Scalar(99, 255, 255), mask);imshow("mask", mask);waitKey(0);return 0;
}


OpenCV-day-010. [图像像素值统计]

import cv2 as cv
import numpy as npsrc = cv.imread("D:/vcprojects/images/test.png", cv.IMREAD_GRAYSCALE)
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)min, max, minLoc, maxLoc = cv.minMaxLoc(src)
print("min: %.2f, max: %.2f"% (min, max))
print("min loc: ", minLoc)
print("max loc: ", maxLoc)means, stddev = cv.meanStdDev(src)
print("mean: %.2f, stddev: %.2f"% (means, stddev))
src[np.where(src < means)] = 0
src[np.where(src > means)] = 255
cv.imshow("binary", src)cv.waitKey(0)
cv.destroyAllWindows()

min: 0.00, max: 255.00
min loc:  (261, 38)
max loc:  (2, 259)
mean: 158.36, stddev: 87.21
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, const char *argv[])
{Mat src = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);double minVal; double maxVal; Point minLoc; Point maxLoc;minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc, Mat());printf("min: %.2f, max: %.2f \n", minVal, maxVal);printf("min loc: (%d, %d) \n", minLoc.x, minLoc.y);printf("max loc: (%d, %d)\n", maxLoc.x, maxLoc.y);// 彩色图像 三通道的 均值与方差src = imread("D:/vcprojects/images/test.png");Mat means, stddev;meanStdDev(src, means, stddev);printf("blue channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(0, 0), stddev.at<double>(0, 0));printf("green channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(1, 0), stddev.at<double>(1, 0));printf("red channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(2, 0), stddev.at<double>(2, 0));waitKey(0);return 0;
}

min: 0.00, max: 255.00
min loc: (261, 38)
max loc: (2, 259)
blue channel->> mean: 189.64, stddev: 72.06
green channel->> mean: 154.22, stddev: 94.04
red channel->> mean: 139.90, stddev: 98.37

OpenCV-day-011. [像素归一化]

import cv2 as cv
import numpy as npsrc = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)# 转换为浮点数类型数组
gray = np.float32(gray)
print(gray)# scale and shift by NORM_MINMAX
dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=0, beta=1.0, norm_type=cv.NORM_MINMAX)
print(dst)
cv.imshow("NORM_MINMAX", np.uint8(dst*255))# scale and shift by NORM_INF
dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv.NORM_INF)
print(dst)
cv.imshow("NORM_INF", np.uint8(dst*255))# scale and shift by NORM_L1
dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv.NORM_L1)
print(dst)
cv.imshow("NORM_L1", np.uint8(dst*10000000))# scale and shift by NORM_L2
dst = np.zeros(gray.shape, dtype=np.float32)
cv.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv.NORM_L2)
print(dst)
cv.imshow("NORM_L2", np.uint8(dst*10000))cv.waitKey(0)
cv.destroyAllWindows()

D:\ProgramData\Anaconda3\python.exe E:/PycharmProjects/test20190828/imageai.py
[[ 41.  38.  35. ...  67.  66.  68.][ 38.  36.  33. ...  70.  72.  71.][ 36.  32.  30. ...  70.  71.  69.]...[152. 143. 137. ... 140. 141. 142.][154. 142. 140. ... 135. 138. 134.][153. 145. 147. ... 130. 132. 133.]]
[[0.16078432 0.14901961 0.13725491 ... 0.2627451  0.25882354 0.26666668][0.14901961 0.14117648 0.12941177 ... 0.27450982 0.28235295 0.2784314 ][0.14117648 0.1254902  0.11764707 ... 0.27450982 0.2784314  0.27058825]...[0.59607846 0.56078434 0.5372549  ... 0.54901963 0.5529412  0.5568628 ][0.6039216  0.5568628  0.54901963 ... 0.5294118  0.5411765  0.5254902 ][0.6        0.5686275  0.5764706  ... 0.50980395 0.5176471  0.52156866]]
[[0.16078432 0.14901961 0.13725491 ... 0.2627451  0.25882354 0.26666668][0.14901961 0.14117648 0.12941177 ... 0.27450982 0.28235295 0.2784314 ][0.14117648 0.1254902  0.11764707 ... 0.27450982 0.2784314  0.27058825]...[0.59607846 0.56078434 0.5372549  ... 0.54901963 0.5529412  0.5568628 ][0.6039216  0.5568628  0.54901963 ... 0.5294118  0.5411765  0.5254902 ][0.6        0.5686275  0.5764706  ... 0.50980395 0.5176471  0.52156866]]
[[1.1459725e-06 1.0621209e-06 9.7826921e-07 ... 1.8726868e-061.8447362e-06 1.9006372e-06][1.0621209e-06 1.0062197e-06 9.2236809e-07 ... 1.9565384e-062.0124394e-06 1.9844890e-06][1.0062197e-06 8.9441755e-07 8.3851648e-07 ... 1.9565384e-061.9844890e-06 1.9285878e-06]...[4.2484835e-06 3.9969286e-06 3.8292251e-06 ... 3.9130769e-063.9410274e-06 3.9689780e-06][4.3043847e-06 3.9689780e-06 3.9130769e-06 ... 3.7733241e-063.8571757e-06 3.7453735e-06][4.2764341e-06 4.0528294e-06 4.1087305e-06 ... 3.6335714e-063.6894724e-06 3.7174229e-06]]
[[0.00047501 0.00044026 0.0004055  ... 0.00077624 0.00076465 0.00078783][0.00044026 0.00041708 0.00038233 ... 0.000811   0.00083417 0.00082258][0.00041708 0.00037074 0.00034757 ... 0.000811   0.00082258 0.00079941]...[0.00176102 0.00165675 0.00158724 ... 0.00162199 0.00163358 0.00164516][0.00178419 0.00164516 0.00162199 ... 0.00156406 0.00159882 0.00155248][0.00177261 0.00167992 0.00170309 ... 0.00150614 0.00152931 0.00154089]]
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, const char *argv[])
{Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);Mat gray, gray_f;cvtColor(src, gray, COLOR_BGR2GRAY);// 转换为浮点数类型数组gray.convertTo(gray, CV_32F);// scale and shift by NORM_MINMAXMat dst = Mat::zeros(gray.size(), CV_32FC1);normalize(gray, dst, 1.0, 0, NORM_MINMAX);Mat result = dst * 255;result.convertTo(dst, CV_8UC1);imshow("NORM_MINMAX", dst);// scale and shift by NORM_INFnormalize(gray, dst, 1.0, 0, NORM_INF);result = dst * 255;result.convertTo(dst, CV_8UC1);imshow("NORM_INF", dst);// scale and shift by NORM_L1normalize(gray, dst, 1.0, 0, NORM_L1);result = dst * 10000000;result.convertTo(dst, CV_8UC1);imshow("NORM_L1", dst);// scale and shift by NORM_L2normalize(gray, dst, 1.0, 0, NORM_L2);result = dst * 10000;result.convertTo(dst, CV_8UC1);imshow("NORM_L2", dst);waitKey(0);return 0;
}

OpenCV-day-012. [视频文件的读写]

import cv2 as cv
import numpy as np#capture = cv.VideoCapture("D:/vcprojects/images/768x576.avi")
capture = cv.VideoCapture(0) #打开摄像头
height = capture.get(cv.CAP_PROP_FRAME_HEIGHT)
width = capture.get(cv.CAP_PROP_FRAME_WIDTH)
count = capture.get(cv.CAP_PROP_FRAME_COUNT)
fps = capture.get(cv.CAP_PROP_FPS)
print(height, width, count, fps)
out = cv.VideoWriter("./test.mp4", cv.VideoWriter_fourcc('D', 'I', 'V', 'X'), 15,(np.int(width), np.int(height)), True)
while True:ret, frame = capture.read()if ret is True:cv.imshow("video-input", frame)out.write(frame)c = cv.waitKey(50)if c == 27: # ESCbreakelse:breakcapture.release()
out.release()

c++1:

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {namedWindow("camera-demo", CV_WINDOW_AUTOSIZE);// 打开摄像头VideoCapture capture(0);Mat frame;while (1) {capture >> frame;imshow("camera-demo", frame);char c = waitKey(50);if (c == 27) {break;}}return 0;
}

c++2:

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {// 打开摄像头//VideoCapture capture(0); // 打开文件VideoCapture capture;capture.open("D:/vcprojects/images/sample.mp4");if (!capture.isOpened()) {printf("could not read this video file...\n");return -1;}Size S = Size((int)capture.get(CV_CAP_PROP_FRAME_WIDTH),(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT));int fps = capture.get(CV_CAP_PROP_FPS);printf("current fps : %d \n", fps);VideoWriter writer("D:/test.mp4", CV_FOURCC('D', 'I', 'V', 'X'), fps, S, true);Mat frame;namedWindow("camera-demo", CV_WINDOW_AUTOSIZE);while (capture.read(frame)) {imshow("camera-demo", frame);writer.write(frame);char c = waitKey(50);if (c == 27) {break;}}capture.release();writer.release();waitKey(0);return 0;
}

OpenCV-day-013. [图像翻转]

import cv2 as cv
import numpy as npsrc = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)# X Flip 倒影
dst1 = cv.flip(src, 0)
cv.imshow("x-flip", dst1)# Y Flip 镜像
dst2 = cv.flip(src, 1)
cv.imshow("y-flip", dst2)# XY Flip 对角
dst3 = cv.flip(src, -1)
cv.imshow("xy-flip", dst3)# custom y-flip
h, w, ch = src.shape
dst = np.zeros(src.shape, src.dtype)
for row in range(h):for col in range(w):b, g, r = src[row, col]dst[row, w - col - 1] = [b, g, r]
cv.imshow("custom-y-flip", dst)cv.waitKey(0)
cv.destroyAllWindows()

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}imshow("input", src);Mat dst;// X Flip 倒影flip(src, dst, 0);imshow("x-flip", dst);// Y Flip 镜像flip(src, dst, 1);imshow("y-flip", dst);// XY Flip 对角flip(src, dst, -1);imshow("xy-flip", dst);waitKey(0);return 0;
}

OpenCV-day-014. [图像插值]

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = imread("D:/vcprojects/images/test.png");if (src.empty()) {printf("could not load image...\n");return -1;}imshow("input", src);int h = src.rows;int w = src.cols;float fx = 0.0, fy = 0.0;Mat dst = Mat::zeros(src.size(), src.type());resize(src, dst, Size(w * 1.5, h * 1.5), fx = 0, fy = 0, INTER_NEAREST);imshow("INTER_NEAREST", dst);resize(src, dst, Size(w * 1.5, h * 1.5), fx = 0, fy = 0, INTER_LINEAR);imshow("INTER_LINEAR", dst);resize(src, dst, Size(w * 1.5, h * 1.5), fx = 0, fy = 0, INTER_CUBIC);imshow("INTER_CUBIC", dst);resize(src, dst, Size(w * 1.5, h * 1.5), fx = 0, fy = 0, INTER_LANCZOS4);imshow("INTER_LANCZOS4", dst);waitKey(0);return 0;
}

OpenCV-day-015. [几何形状绘制]

OpenCV-day-016. [图像ROI与ROI操作]

OpenCV实例140+ (1 图像处理基础知识)相关推荐

  1. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  2. python图像处理基础知识(cv库函数说明)

    python图像处理基础知识,函数说明 目录 python图像处理基础知识,函数说明 1.处理照片(open_cv库) 1.1 cv2.imread('filepath',flags) 1.2 cv2 ...

  3. 图像处理基础知识总结1

    图像处理基础知识总结(1) 前言:从接触图像处理.生物特征识别.视频编解码.机器学习已两年有余,还没有系统的总结过,正好最近刷一下Tsinghua的Tipa课件和PKU的Digital Image P ...

  4. python图像处理基础知识(plt库函数说明)

    python图像处理基础知识,plt库函数说明 目录 python图像处理基础知识,plt库函数说明 1.画图(plt库) 1.1 plt.figure(num='',figsize=(x, y),d ...

  5. 图像处理基础知识系列之五:贝叶斯方法简单梳理

    图像处理基础知识系列之五:贝叶斯方法简单梳理             文章来源:                  刘未鹏        数学之美番外篇:平凡而又神奇的贝叶斯方法(作者是个技术兼心理学 ...

  6. 数字图像处理基础知识之二

    空域增强技术: 基础知识1: 定义二维函数f(x,y),其中x,y是空间坐标,f(x,y)是点(x,y)的幅值. 灰度图像是一个二维灰度(亮度)函数f(x,y):彩色图片是由三个二维灰度函数f(x,y ...

  7. 【图像处理基础知识】python+opencv显示中文

    直接通过cv2.putText()写入的文字只能是英文,虽然opencv以字符串形式接收,但对于中文,会显示问号"???". 找到一个可行的办法,可以应急 封装代码: #codin ...

  8. 【图像处理基础知识(python+openCV)】——目标检测

    一.填充轮廓 #_*_ encoding=utf-8 _*_ import numpy as np import cv2img=cv2.imread('leilei.jpg') imggray=cv2 ...

  9. OpenCV笔记14——图像处理基础知识

    1.图像的深度(强度等级) 图像深度是针对一个像素点而言的,一幅图像的细腻程度就体现在像素的深度上: 一幅用RGB色彩空间描述的真彩色图像的深度是24位(R/G/B各有8位),那么它就能够表示出167 ...

最新文章

  1. String 方法中 replace 和 replaceAll 的区别详解(源码分析)
  2. 【Python】【函数式编程】
  3. Android Studio 3.0+ Record Espresso Test 自动化测试
  4. wamp配置多少站点
  5. PHP保存Base64图片的问题
  6. 创业95%失败不是因项目本身
  7. ios 顶部tab滑动实现_iOS开发之多表视图滑动切换示例(仿头条客户端)
  8. Python bytes 和 string 相互转换 - Python零基础入门教程
  9. STM32工作笔记0016---MDK开发环境安装
  10. VGG16—perceptual loss in keras感知损失【Keras】
  11. python学习之路四(类和对象1)
  12. php重构求圆柱圆锥的体积,六年级数学下册2.8 圆锥的体积教案 (新版)苏教版...
  13. ChucK初步(8)
  14. 超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作
  15. mysql dos 怎样卸载_MySQL安装与卸载
  16. 蓝桥杯训练1:质数判断,同余问题
  17. open judge1.7.13
  18. HITCS_大作业_程序人生-Hello’s P2P
  19. 企业内部控制体系建设路径及启示 ——基于某公司内控建设案例研究
  20. gt-itm模型生成拓扑结构

热门文章

  1. 金蝶mysql_解决方案-金蝶财务软件中的数据库在哪里?
  2. linux搭建本地YUM源配置详细步骤
  3. 电子驻车系统(拉索式)
  4. 用pyxel 学写 Kill Virus 像素游戏
  5. HTML5 到底是什么?
  6. php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
  7. 误删桌面上的 计算机 图片,桌面图标删除不了怎么办 桌面图片不见找回【图文】...
  8. 沪指暴跌200点 两市超过四分之一股票跌停
  9. 奇迹gm工具 奇迹批量远程工具
  10. QT 文本html显示格式的问题,如在QTextBrowser.setText用tr(),其中为html格式