python - 使用 OpenCV 实时更改颜色
问题描述
我目前被分配了一项关于使用 OpenCV 实时更改某种颜色的任务,我能够配置为显示相机,并检测范围内的某些颜色,但坚持将颜色更改为另一种颜色。例如,在我的代码中,我检测到红色并想将其更改为蓝色。
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int RoboX = 300;
int RoboY = 10;
Mat VRobo(Mat gbr, int arah);
int main()
{
VideoCapture kameraku(0);
Mat image;
Mat image2;
Mat hsv;
Mat BW;
Mat element;
namedWindow("Kamera", WINDOW_AUTOSIZE);
namedWindow("Convert", WINDOW_AUTOSIZE);
while (1) {
kameraku >> image;
kameraku >> image2;
imshow("Kamera", image);
cvtColor(image2, hsv, CV_BGR2HSV);
inRange(hsv, Scalar(0, 60, 60), Scalar(5, 255, 255), BW);
element = getStructuringElement(MORPH_ELLIPSE, Size(5, 5));
erode(BW, BW, element);
erode(BW, BW, element);
erode(BW, BW, element);
dilate(BW, BW, element);
dilate(BW, BW, element);
dilate(BW, BW, element);
imshow("Convert", BW);
char c = (char)waitKey(25);
if (c == 27) break;
}
kameraku.release();
destroyAllWindows();
return 0;
}
这是python代码:
import numpy as np
# Load the aerial image and convert to HSV colourspace
image = cv.imread("aerial.png")
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
# Define lower and uppper limits of what we call "brown"
brown_lo=np.array([10,0,0])
brown_hi=np.array([20,255,255])
# Mask image to only select browns
mask=cv.inRange(hsv,brown_lo,brown_hi)
# Change image to red where we found brown
image[mask>0]=(0,0,255)
cv.imwrite("result.png",image)```
解决方案
推荐阅读
- azure-notificationhub - NotificationHubClient.SendDirectNotificationAsync(notification, token) 是否已弃用?
- javascript - 如果为空,则用最后定义的值填充数组,直到下一个定义的值
- algorithm - 在最小堆中查找第二个和第三个最小值
- css - 如何有一个带有 vh 的标题背景图像?
- python - 使用 ajax 将数据发布到 django 视图不起作用
- c++ - 用于 c++ 插件的 node.js 结构序列化
- node.js - 使用 Webpack 的 Express 应用程序的文件和文件夹结构
- node.js - 使用heroku托管的Angular Universal服务器端的请求超时
- ms-access - Splitform不更新文本框/标签
- c++ - 巴斯卡拉罪功能