- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Ubuntu 12.04LTS 中编写了一个简单的 Opencv 程序,它可以调整网络摄像头(Logitech C525)的设置,例如亮度和曝光等。
它在 Windows 7 中运行良好,但在 Linux 中它给了我这个错误
$ ./adjust-camera
init done
opengl support available
HIGHGUI ERROR: V4L2: Unable to get property Exposure(9963793) - Invalid argument
HIGHGUI ERROR: V4L: Exposure control in V4L is not supported
HIGHGUI ERROR: V4L: Property Exposure(15) not supported by device
HIGHGUI ERROR: V4L: Property Exposure(15) not supported by device
HIGHGUI ERROR: V4L: Property Exposure(15) not supported by device
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp" // Basic OpenCV structures (cv::Mat)
#include "opencv2/highgui/highgui.hpp" // Video write
#include "string.h"
using namespace cv;
using namespace std;
void calibrateCamera();
void getCameraVals();
VideoCapture cam(0);
//variables for cam camera
int brightness_slider=125;
int contrast_slider=86;
int gain_slider=77;
int saturation_slider=34;
int exposure_slider=6; //exposure range is from 0 to -7.
int main()
{
namedWindow("camera 1",WINDOW_AUTOSIZE);
Mat frame;
getCameraVals();
createTrackbar("Brightness", "camera 1", &brightness_slider, 255);
createTrackbar("Contrast", "camera 1", &contrast_slider, 255);
createTrackbar("Gain", "camera 1", &gain_slider, 255);
createTrackbar("Saturation", "camera 1", &saturation_slider, 255);
createTrackbar("Exposure", "camera 1", &exposure_slider, 2047);
while(true)
{
calibrateCamera();
cam>>frame;
imshow("camera 1",frame);
if(waitKey(3)>=0) break;
}
return(0);
}
void getCameraVals()
{
brightness_slider = cam.get(CV_CAP_PROP_BRIGHTNESS);
contrast_slider = cam.get(CV_CAP_PROP_CONTRAST);
gain_slider=cam.get(CV_CAP_PROP_GAIN);
saturation_slider=cam.get(CV_CAP_PROP_SATURATION);
exposure_slider=cam.get(CV_CAP_PROP_EXPOSURE);
}
void calibrateCamera()
{
cam.set(CV_CAP_PROP_BRIGHTNESS, brightness_slider);
cam.set(CV_CAP_PROP_CONTRAST, contrast_slider);
cam.set(CV_CAP_PROP_GAIN, gain_slider);
cam.set(CV_CAP_PROP_SATURATION, saturation_slider);
cam.set(CV_CAP_PROP_EXPOSURE, exposure_slider);
//cam.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
//cam.set(CV_CAP_PROP_FRAME_HEIGHT, 720);
}
![enter image description here][1]ls#!/bin/bash
echo "compiling $1"
if [[ $1 == *.c ]]
then
gcc -ggdb `pkg-config --cflags opencv` -o `basename $1 .c` $1 `pkg-config --libs opencv`;
elif [[ $1 == *.cpp ]]
then
g++ -ggdb `pkg-config --cflags opencv` -o `basename $1 .cpp` $1 `pkg-config --libs opencv`;
else
echo "Please compile only .c or .cpp files"
fi
echo "Output file => ${1%.*}"
最佳答案
问题与您使用的范围有关。 CV 属性的值是 0 到 1 之间的两倍,但您使用的轨迹栏的值从 0 到 255...
一种可能的解决方案是将所有内容放在相同的范围内,例如从 0 到 100。
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp" // Basic OpenCV structures (cv::Mat)
#include "opencv2/highgui/highgui.hpp" // Video write
#include "string.h"
using namespace cv;
using namespace std;
void calibrateCamera();
void getCameraVals();
VideoCapture cam(0);
//variables for cam camera
int brightness_slider=25;
int contrast_slider=86;
int gain_slider=77;
int saturation_slider=34;
int exposure_slider=6; //exposure range is from 0 to -7.
int main()
{
namedWindow("camera 1",WINDOW_AUTOSIZE);
Mat frame;
getCameraVals();
createTrackbar("Brightness", "camera 1", &brightness_slider, 100);
createTrackbar("Contrast", "camera 1", &contrast_slider, 100);
createTrackbar("Gain", "camera 1", &gain_slider, 100);
createTrackbar("Saturation", "camera 1", &saturation_slider, 100);
createTrackbar("Exposure", "camera 1", &exposure_slider, 100);
while(true)
{
calibrateCamera();
cam>>frame;
imshow("camera 1",frame);
if(waitKey(3)>=0) break;
}
return(0);
}
void getCameraVals()
{
brightness_slider = cam.get(CV_CAP_PROP_BRIGHTNESS)*100;
contrast_slider = cam.get(CV_CAP_PROP_CONTRAST)*100;
gain_slider=cam.get(CV_CAP_PROP_GAIN)*100;
saturation_slider=cam.get(CV_CAP_PROP_SATURATION)*100;
exposure_slider=cam.get(CV_CAP_PROP_EXPOSURE)*100;
}
void calibrateCamera()
{
cam.set(CV_CAP_PROP_BRIGHTNESS, double(brightness_slider/100));
cam.set(CV_CAP_PROP_CONTRAST, double(contrast_slider/100));
cam.set(CV_CAP_PROP_GAIN, double(gain_slider/100));
cam.set(CV_CAP_PROP_SATURATION, double(saturation_slider/100));
cam.set(CV_CAP_PROP_EXPOSURE, double(exposure_slider/100));
//cam.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
//cam.set(CV_CAP_PROP_FRAME_HEIGHT, 720);
}
关于opencv - Ubuntu Opencv Camera settings V4L2 error 不支持曝光控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418480/
我正在使用navigator.getUserMedia限制访问用户的网络摄像头,使用提要作为 HTML 的源 然后将其流复制到 drawImage一个语境。我这样做是为了每隔一段时间就拍一张快照。 我
我有一个数据层(包含与 MongoDB 的连接)、一个域层(包含存储库和实体)和一个服务层(包含服务和模型) 现在因为我的实体使用 ObjectId,它们需要 MongoDB 的知识(这样可以吗?)
现在在我的相机应用程序中,我允许用户触摸任意位置来设置焦点和曝光,但我如何才能像 Apple 的相机应用程序一样获得两全其美的效果? 例如,用户可能希望通过触摸来聚焦前景中的某物,但如果场景变化足够大
我想实现标准的用户体验,在预览中点击一个点,以将自动对焦和自动曝光点调整到他们点击的位置。我找到了 Preview.focus() 函数,但是它说它需要“传感器坐标系”中的尺寸,我假设它与 Textu
我需要对大量照片进行排序,去除模糊图像(由于相机抖动)、曝光过度/不足的图像,并检测图像是横向还是纵向拍摄。这些事情可以使用图像处理库在图像上完成吗?或者它们仍然超出算法解决方案的范围吗? 最佳答案
我正在尝试调整网络摄像头的亮度。我需要 3 张不同亮度设置的不同照片。我不想让它成为手动的,所以如果想在程序中包含设置。 下面是我正在使用的代码。使用方法 GetFrame() 可以从网络摄像头获取下
我目前被困在图片视频项目上。 问题: 我正在从 UE4 中提取图片,由于一个错误,在屏幕截图的渲染过程中并未考虑所有灯光。输出是 HDR 图像。我想获得更好的亮度,因为导出的图片很暗,就像第一次曝光一
在过去的两天里,我遇到了 docker 问题,但我可以得到它。按照 docker 文档,您可以使用 EXPOSE 公开容器将监听连接的端口。到目前为止,一切都很好! 如果我的应用程序在端口 8080
自一周以来,我一直在尝试为我的 IOS 应用实现一些图像处理滤镜,如白平衡、曝光和分割色调(如在 Photoshop 中),但我没有获得实现其中任何一个的标准实现。 我通过ImageMagick找到了
据外媒 LOGGER 消息,小米手环 6 的信息在另一款智能手环应用Zepp中泄露。这款应用的固件代码中,出现了 “MI Smart Band 6”字样,还展现了其通过中国无线电认证的 CMIIT
据外媒Samsung Mobile报道,消息人士称,三星即将推出的Galaxy Watch智能手表将具有物理表圈。我们暂时将其称为Galaxy Watch 2。 去年,三星在八个月的时间内发布了两
我正在快速开发一个 MAC 应用程序,我现在可以在 NSView 上预览相机,我想更改亮度/对比度/白平衡和所有与相机相关的设置。 我正在使用 AVFoundation 框架来预览相机,我有 slid
据外媒 gsmarena 报道,realme Watch 2 已经通过了FCC 认证,并且被曝光了完整的设计规格。 realme Watch 2 代号为 RMW2008,屏幕方面与上一代相同,采用
我是一名优秀的程序员,十分优秀!